今天,在正式讲解之前,先给大家安利一个Ruby界面开发工具。
我们平时使用脚本语言,最大的用处就是帮助我们批量完成一些纯手工操作。
不是去专门开发ERP或者其他大型管理系统,我们真正需要一个小而美,短而精的GUI工具。
纵观Ruby的GUI工具,有Tk,Qt,Wxruby,Fxruby,Gtk2.0+等等一些。
我在win7下安装这些GUI,着实花了一些时间。
可能我操作不当,上面这几个,只有Fxruby能和我的Ruby2.7兼容。
但是,这个Fxruby还不是我想要的工具。
我在网上搜索Ruby GUItookit的时候,发现了一个GUI,他是Shoes。
没错,Ruby Shoes,这个工具的简介我不想多讲。
这个GUI和其他的不太一样。
当我们在程序里编写好程序时,还需要Shoes.app...end嵌套。
除此之外,还需要用Shoes主程序打开。
也许这是为了防止我们误操作,打开不明来历的Ruby文件,进而导致系统崩溃的原因吧。
话不多说,跟我一起下载安装。
根据我的经验,你需要安装Shoes3.3.6版本。
Shoes3.3.7(最新版本)在使用的时候会出现鼠标偏移的问题。
下载
为了让你理解,我选择这个工具的原因。
这次,我就用这个GUI开发一个TXT文字提取器。
我们把Shoes官方手册里的代码演示提取出来。
细心的你会发现,这些代码之间是用{{{...}}}三对大括号包裹在一起的。
因此我们使用正则表达式,就会很容易把演示代码提取出来。
界面设计
(一)控件对象
1.Shoes主程序控件
# 生成主程序窗体
shoes.app do
end
2.文本控件
# 生成一段文字独占一行
para
3.button控件
# 生成按钮控件
button do
end
4.edit_line控件
# 生成单行输入框
edit_line
5.stack控件
# 用于分割窗体或者组合控件,成为控件载体。
stack do
end
(二)方法
方法有两种表示方式。
# 四周边距增加30
:margin=>30
# 上边距增加30
:margin_top=>30
# 下边距增加30
:margin_bottom=>30
# 左边距增加30
:margin_left=>30
# 右边距增加30
:margin_right=>30
# 宽度为470
width:470
# 高度为100
height:100
由此可见,你可以使用 :
方法名=>数值,,或者方法名:数值的方式使用方法设置控件的属性值。
ask_open_file,这是一个特殊的方法,用于弹框选择文件,他的返回值是 文件绝对路径
。
我们经常使用的 "#{fname}" 方式对变量进行赋值。
fname=ask_open_file
@el1.text="#{fname}"
ask_open_file返回的路径大多是 文件名.后缀,我们经常使用gsub(//, '/')方法把“”转换为“/”。
这一点,是我们使用Ruby编程需要注意的。
(三)属性
@el3=edit_line
argument2=@el3.text
我们使用@+变量名,使之成为实例变量,便于我们将其赋值给参数。
(四)程序逻辑
我们在Shoes.app外定义一个方法,用于将路径变量,开始、结束标记参数传入方法内执行。
def Shoes.extract(path,argument1,argument2)
end
File.dirname(__FILE__)获取当前路径,生成目标文件名。
textfile = File.dirname(__FILE__)+"/extract.txt"
读取源文件。
data = File.read(path)
正则表达式用于匹配{{{...}}}之间内容。
regex=/#{argument1}((w|W)*?)#{argument2}/
使用“w”模式打开文件,针对每一行执行语句块。
即,文件不存在,则创建文件,存在则清空文件。
File.open(textfile, "w") do |f|
end
将正则匹配到的内容依次写入文件。
data.scan(regex).each{|m|f.write" #{m[0]}"}
代码展示
# Ruby