re_expand 0.0.6 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d25d779f31d39147633c61eb33b0d54b95611378
4
+ data.tar.gz: 5f3e20916238ea9bdcde3a1a925f9e2f440f21ad
5
+ SHA512:
6
+ metadata.gz: 63fe3ec761fe216b41aa1e1ad7698b99dfcc43fa154ad7cd7cdc0fec7cd067175add88157ba6e8f6b4908b58c0d03b127fb139e731ae92f36afc58a5c31f8844
7
+ data.tar.gz: 4ddde9430c4530088b80d577ecf4a0e2a1b02a6d3f52512c4b4e4eba4a628624641bdc7cc507bc2c1e941be8cd0d32e8a41e6671b0966d329fc3331e7ca05c83
data/.gitignore ADDED
@@ -0,0 +1,10 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *~
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in expand_ruby.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Toshiyuki Masui
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/Makefile ADDED
@@ -0,0 +1,22 @@
1
+ VERSION=0.1.1
2
+ .PHONY: test
3
+
4
+ test:
5
+ rake test
6
+
7
+ # Build re_expand-0.1.0.gem into the pkg directory
8
+ build:
9
+ rake build
10
+
11
+ # Build and install re_expand-0.1.0.gem into system gems
12
+ install:
13
+ rake install
14
+
15
+ # Create tag v0.1.0 and build and push re_expand-0.1.0.gem to Rubygems
16
+ release:
17
+ rake release
18
+
19
+ # Push to GitHub
20
+ push:
21
+ git push git@github.com:masui/expand_ruby.git
22
+
data/README.md ADDED
@@ -0,0 +1,39 @@
1
+ # re_expand
2
+
3
+ * Generates all the text strings that match the
4
+ given regexp.
5
+
6
+ `"(a|b)(1|2)"` => `["a1", "a2", "b1", "b2"]`
7
+
8
+ * If a filter pattern is given,
9
+ the output is filtered by the pattern.
10
+
11
+ ## Install
12
+
13
+ $ gem install re_expand
14
+
15
+ ## Usage
16
+
17
+ require 're_expand'
18
+ "test (a|b|c)".expand { |s,a|
19
+ puts s
20
+ }
21
+ # "test a", "test b", ...
22
+ "(a|b)(1|2)".expand
23
+ # => ['a1', 'a2', 'b1', 'b2']
24
+
25
+ ## Development
26
+
27
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
28
+
29
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
30
+
31
+ ## Contributing
32
+
33
+ Bug reports and pull requests are welcome on [GitHub](https://github.com/masui/expand_ruby).
34
+
35
+
36
+ ## License
37
+
38
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
39
+
data/Rakefile CHANGED
@@ -1,27 +1,10 @@
1
- require 'rubygems'
2
- gem 'hoe', '>= 2.1.0'
3
- require 'hoe'
4
- require 'fileutils'
5
- require './lib/re_expand'
6
-
7
- Hoe.plugin :newgem
8
- # Hoe.plugin :website
9
- # Hoe.plugin :cucumberfeatures
10
-
11
- # Generate all the Rake tasks
12
- # Run 'rake -T' to see list of generated tasks (from gem root directory)
13
- $hoe = Hoe.spec 're_expand' do
14
- self.developer 'Toshiyuki Masui', 'masui@pitecan.com'
15
- self.post_install_message = 'PostInstall.txt' # TODO remove if post-install message not required
16
- self.rubyforge_name = self.name # TODO this is default value
17
- self.extra_deps = [['asearch','>= 0.0.1']]
18
- # self.extra_deps = [['activesupport','>= 2.0.2']]
19
-
20
- end
21
-
22
- require 'newgem/tasks'
23
- Dir['tasks/**/*.rake'].each { |t| load t }
24
-
25
- # TODO - want other tests/tasks run by default? Add them to the list
26
- # remove_task :default
27
- # task :default => [:spec, :features]
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ t.libs << "lib"
7
+ t.test_files = FileList['test/**/*_test.rb']
8
+ end
9
+
10
+ task :default => :test
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "re_expand"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 're_expand/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "re_expand"
8
+ spec.version = ExpandRuby::VERSION
9
+ spec.authors = ["Toshiyuki Masui"]
10
+ spec.email = ["masui@pitecan.com"]
11
+
12
+ spec.summary = %q{Generates all the text strings that match the given regexp.Expand RegExp.}
13
+ spec.description = %q{Generates all the text strings that match the given regexp.Expand RegExp.}
14
+ spec.homepage = "https://github.com/masui/expand_ruby"
15
+ spec.license = "MIT"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
+ spec.bindir = "exe"
19
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
+ spec.require_paths = ["lib"]
21
+
22
+ spec.add_development_dependency "bundler", "~> 1.10"
23
+ spec.add_development_dependency "rake", "~> 10.0"
24
+ spec.add_development_dependency "minitest"
25
+
26
+ spec.add_development_dependency "asearch",'>= 0.0.1'
27
+ end
@@ -1,10 +1,11 @@
1
1
  # -*- coding: utf-8 -*-
2
+ #
2
3
  # Generator.rb
3
- # ExpandHelpApp
4
4
  #
5
5
  # Created by Toshiyuki Masui on 2011/02/26.
6
- # Copyright 2011 Pitecan Systems. All rights reserved.
7
-
6
+ # Modified by Toshiyuki Masui on 2012/05/??
7
+ # Modified by Toshiyuki Masui on 2016/04/24
8
+ # Copyright 2011-2016 Pitecan Systems. All rights reserved.
8
9
  #
9
10
  # ( ( ) ) ( ( ) ( ( ) ) ( ) ) | ( ( ) )
10
11
  # pars [1]
@@ -13,12 +14,12 @@
13
14
  # [3,4]
14
15
  # [3,5]
15
16
 
16
- require 'Scanner'
17
- require 'Node'
17
+ require 're_expand/Scanner'
18
+ require 're_expand/Node'
18
19
 
19
- require 'asearch'
20
+ require 'asearch' # これはGem
20
21
 
21
- module ReExpand
22
+ module ExpandRuby
22
23
  class GenNode
23
24
  def initialize(id, state=[], s="", substrings=[], accept=false)
24
25
  @id = id
@@ -51,7 +52,7 @@ module ReExpand
51
52
  #
52
53
  # ルールを解析して状態遷移機械を作成し、patにマッチするもののリストを返す
53
54
  #
54
- def generate(pat, app = nil)
55
+ def generate(pat, blockambig=0)
55
56
  res = [[],[],[]] # 曖昧度0,1,2のマッチ結果
56
57
  patterns = pat.split.map { |p| p.downcase }
57
58
 
@@ -69,6 +70,7 @@ module ReExpand
69
70
  #
70
71
  lists = []
71
72
  listed = [{},{},{}]
73
+ block_listed = {}
72
74
  #
73
75
  # 初期状態
74
76
  #
@@ -76,8 +78,10 @@ module ReExpand
76
78
  list[0] = GenNode.new(startnode.id, @asearch.initstate)
77
79
  lists[0] = list
78
80
  #
81
+ loopcount = 0
79
82
  (0..1000).each { |length|
80
- break if app && app.inputPending
83
+ #loop do
84
+ # length = loopcount
81
85
  list = lists[length]
82
86
  newlist = []
83
87
  # puts "#{length} - #{list.length}"
@@ -98,23 +102,34 @@ module ReExpand
98
102
  # マッチしてたら出力リストに加える
99
103
  #
100
104
  if acceptno then
101
- maxambig = 2
102
- (0..maxambig).each { |ambig|
103
- if !listed[ambig][s] then
104
- if (newstate[ambig] & @asearch.acceptpat) != 0 then # マッチ
105
- maxambig = ambig if ambig < maxambig # 曖昧度0でマッチすれば曖昧度1の検索は不要
106
- listed[ambig][s] = true
107
- sslen = ss.length
108
- if sslen > 0 then
109
- # patstr = "(.*)\t" * (sslen-1) + "(.*)"
110
- patstr = (["(.*)"] * sslen).join("\t")
111
- /#{patstr}/ =~ ss.join("\t")
105
+ if block_given? then
106
+ (0..blockambig).each { |ambig|
107
+ if !block_listed[s] then
108
+ if (newstate[ambig] & @asearch.acceptpat) != 0 then # マッチ
109
+ block_listed[s] = true
110
+ yield [s] + ss
111
+ end
112
+ end
113
+ }
114
+ else
115
+ maxambig = 2
116
+ (0..maxambig).each { |ambig|
117
+ if !listed[ambig][s] then
118
+ if (newstate[ambig] & @asearch.acceptpat) != 0 then # マッチ
119
+ maxambig = ambig if ambig < maxambig # 曖昧度0でマッチすれば曖昧度1の検索は不要
120
+ listed[ambig][s] = true
121
+ sslen = ss.length
122
+ if sslen > 0 then
123
+ # patstr = "(.*)\t" * (sslen-1) + "(.*)"
124
+ patstr = (["(.*)"] * sslen).join("\t")
125
+ /#{patstr}/ =~ ss.join("\t")
126
+ end
127
+ # 'set date #{$2}' のような記述の$変数にsubstringの値を代入
128
+ res[ambig] << [s, eval('%('+@commands[acceptno]+')')]
112
129
  end
113
- # 'set date #{$2}' のような記述の$変数にsubstringの値を代入
114
- res[ambig] << [s, eval('%('+@commands[acceptno]+')')]
115
130
  end
116
- end
117
- }
131
+ }
132
+ end
118
133
  end
119
134
  }
120
135
  end
@@ -122,6 +137,8 @@ module ReExpand
122
137
  break if newlist.length == 0
123
138
  lists << newlist
124
139
  break if res[0].length > 100
140
+ # loopcount += 1
141
+ #end
125
142
  }
126
143
  [res[0], res[1], res[2]]
127
144
  end
@@ -1,5 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  #
3
+ # Node.rb
4
+ #
3
5
  # ノードとノード間遷移
4
6
  #
5
7
  # (self) pat dest
@@ -8,7 +10,7 @@
8
10
  # ----------> □
9
11
  #
10
12
 
11
- module ReExpand
13
+ module ExpandRuby
12
14
  class Trans
13
15
  def initialize(pat,dest)
14
16
  # pat にマッチしたら dest に遷移
@@ -1,11 +1,12 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  #
3
+ # Scanner.rb
4
+ #
3
5
  # 文字列から1トークンずつ取得
4
6
  #
5
7
  $KCODE = 'utf8' if RUBY_VERSION < "1.9"
6
8
 
7
-
8
- module ReExpand
9
+ module ExpandRuby
9
10
  class Scanner
10
11
  def initialize(s)
11
12
  @s = s
@@ -0,0 +1,3 @@
1
+ module ExpandRuby
2
+ VERSION = "0.1.1"
3
+ end
data/lib/re_expand.rb CHANGED
@@ -1,51 +1,33 @@
1
- # -*- coding: utf-8 -*-
2
- $:.unshift(File.dirname(__FILE__)) unless
3
- $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
1
+ # coding: utf-8
2
+ require "re_expand/version"
4
3
 
5
- module ReExpand
6
- VERSION = '0.0.6'
4
+ module ExpandRuby
5
+ # Your code goes here...
7
6
  end
8
7
 
9
- require 'Generator'
10
- require 'Node'
11
- require 'Scanner'
12
-
13
- # require 'asearch'
14
-
8
+ require 're_expand/Generator'
9
+ require 're_expand/Node'
10
+ require 're_expand/Scanner'
11
+
15
12
  class String
16
- # ExpandHelp用のライブラリを利用
17
- def expand(filterpat=' ')
18
- g = ReExpand::Generator.new
19
- g.add(self,"\#{$1}\t\#{$2}\t\#{$3}\t\#{$4}\t\#{$5}\t\#{$6}\t\#{$7}\t\#{$8}\t\#{$9}")
13
+ #
14
+ # restr.expand { |a| ... }
15
+ # restr.expand(' abc '){ |a| ... } パタンを指定
16
+ # restr.expand(' abc ',1){ |a| ... } 許容曖昧度を指定
17
+ #
18
+ def expand(filterpat=' ',ambig=0,&block)
19
+ g = ExpandRuby::Generator.new
20
+ g.add(self,'')
20
21
  strings = []
21
- #if filterpat.class == Regexp && block then
22
- # g.generate(' ',block)
23
- # return
24
- if filterpat.class == String then
22
+
23
+ if block_given? then
24
+ g.generate(filterpat,ambig,&block)
25
+ else
25
26
  m = g.generate(filterpat)
26
27
  matched = m[0].length > 0 ? m[0] : m[1].length > 0 ? m[1] : m[2]
27
28
  strings = matched.collect { |r|
28
29
  r[0]
29
30
  }
30
- else
31
- matched = g.generate(' ')[0]
32
- if filterpat.class == Regexp then
33
- matched = matched.find_all { |r|
34
- filterpat.match(r[0])
35
- }
36
- end
37
- strings = matched.collect { |r|
38
- r[0]
39
- }
40
- end
41
-
42
- if block_given? then
43
- matched.each { |m|
44
- yield m[0], m[1].split(/\t/)
45
- }
46
- else
47
- strings
48
31
  end
49
32
  end
50
33
  end
51
-
metadata CHANGED
@@ -1,151 +1,114 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: re_expand
3
- version: !ruby/object:Gem::Version
4
- hash: 19
5
- prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 6
10
- version: 0.0.6
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Toshiyuki Masui
14
8
  autorequire:
15
- bindir: bin
9
+ bindir: exe
16
10
  cert_chain: []
17
-
18
- date: 2012-05-12 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: asearch
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 29
29
- segments:
30
- - 0
31
- - 0
32
- - 1
33
- version: 0.0.1
34
- type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: rdoc
11
+ date: 2016-04-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.10'
20
+ type: :development
38
21
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
40
- none: false
41
- requirements:
42
- - - ~>
43
- - !ruby/object:Gem::Version
44
- hash: 19
45
- segments:
46
- - 3
47
- - 10
48
- version: "3.10"
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.10'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
49
34
  type: :development
50
- version_requirements: *id002
51
- - !ruby/object:Gem::Dependency
52
- name: newgem
53
35
  prerelease: false
54
- requirement: &id003 !ruby/object:Gem::Requirement
55
- none: false
56
- requirements:
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
57
45
  - - ">="
58
- - !ruby/object:Gem::Version
59
- hash: 5
60
- segments:
61
- - 1
62
- - 5
63
- - 3
64
- version: 1.5.3
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
65
48
  type: :development
66
- version_requirements: *id003
67
- - !ruby/object:Gem::Dependency
68
- name: hoe
69
49
  prerelease: false
70
- requirement: &id004 !ruby/object:Gem::Requirement
71
- none: false
72
- requirements:
73
- - - ~>
74
- - !ruby/object:Gem::Version
75
- hash: 27
76
- segments:
77
- - 2
78
- - 12
79
- version: "2.12"
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: asearch
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 0.0.1
80
62
  type: :development
81
- version_requirements: *id004
82
- description: |-
83
- Generates all the text strings which match the given regexp.
84
- If a filter pattern is given, the output is filtered by the pattern.
85
- email:
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 0.0.1
69
+ description: Generates all the text strings that match the given regexp.Expand RegExp.
70
+ email:
86
71
  - masui@pitecan.com
87
72
  executables: []
88
-
89
73
  extensions: []
90
-
91
- extra_rdoc_files:
92
- - History.txt
93
- - Manifest.txt
94
- - PostInstall.txt
95
- files:
96
- - History.txt
97
- - Manifest.txt
98
- - PostInstall.txt
99
- - README.rdoc
74
+ extra_rdoc_files: []
75
+ files:
76
+ - ".gitignore"
77
+ - Gemfile
78
+ - LICENSE.txt
79
+ - Makefile
80
+ - README.md
100
81
  - Rakefile
82
+ - bin/console
83
+ - bin/setup
84
+ - expand_ruby.gemspec
101
85
  - lib/re_expand.rb
102
- - lib/Generator.rb
103
- - lib/Node.rb
104
- - lib/Scanner.rb
105
- - script/console
106
- - script/destroy
107
- - script/generate
108
- - test/test_helper.rb
109
- - test/test_re_expand.rb
110
- - test/test_generator.rb
111
- - test/test_scanner.rb
112
- - .gemtest
113
- homepage: http://github.com/masui/expand-ruby
114
- licenses: []
115
-
116
- post_install_message: PostInstall.txt
117
- rdoc_options:
118
- - --main
119
- - README.rdoc
120
- require_paths:
86
+ - lib/re_expand/Generator.rb
87
+ - lib/re_expand/Node.rb
88
+ - lib/re_expand/Scanner.rb
89
+ - lib/re_expand/version.rb
90
+ homepage: https://github.com/masui/expand_ruby
91
+ licenses:
92
+ - MIT
93
+ metadata: {}
94
+ post_install_message:
95
+ rdoc_options: []
96
+ require_paths:
121
97
  - lib
122
- required_ruby_version: !ruby/object:Gem::Requirement
123
- none: false
124
- requirements:
98
+ required_ruby_version: !ruby/object:Gem::Requirement
99
+ requirements:
125
100
  - - ">="
126
- - !ruby/object:Gem::Version
127
- hash: 3
128
- segments:
129
- - 0
130
- version: "0"
131
- required_rubygems_version: !ruby/object:Gem::Requirement
132
- none: false
133
- requirements:
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ required_rubygems_version: !ruby/object:Gem::Requirement
104
+ requirements:
134
105
  - - ">="
135
- - !ruby/object:Gem::Version
136
- hash: 3
137
- segments:
138
- - 0
139
- version: "0"
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
140
108
  requirements: []
141
-
142
- rubyforge_project: re_expand
143
- rubygems_version: 1.8.23
109
+ rubyforge_project:
110
+ rubygems_version: 2.2.2
144
111
  signing_key:
145
- specification_version: 3
146
- summary: Generates all the text strings which match the given regexp
147
- test_files:
148
- - test/test_generator.rb
149
- - test/test_helper.rb
150
- - test/test_re_expand.rb
151
- - test/test_scanner.rb
112
+ specification_version: 4
113
+ summary: Generates all the text strings that match the given regexp.Expand RegExp.
114
+ test_files: []
data/.gemtest DELETED
File without changes
data/History.txt DELETED
@@ -1,4 +0,0 @@
1
- === 0.0.1 2012-04-30
2
-
3
- * 1 major enhancement:
4
- * Initial release
data/Manifest.txt DELETED
@@ -1,18 +0,0 @@
1
- History.txt
2
- Manifest.txt
3
- PostInstall.txt
4
- README.rdoc
5
- Rakefile
6
- lib/re_expand.rb
7
- lib/Generator.rb
8
- lib/Node.rb
9
- lib/Scanner.rb
10
- script/console
11
- script/destroy
12
- script/generate
13
- test/test_helper.rb
14
- test/test_re_expand.rb
15
- test/test_generator.rb
16
- test/test_re_expand.rb
17
- test/test_scanner.rb
18
-
data/PostInstall.txt DELETED
@@ -1,7 +0,0 @@
1
-
2
- For more information on re_expand, see http://re_expand.rubyforge.org
3
-
4
- NOTE: Change this information in PostInstall.txt
5
- You can also delete it if you don't want it.
6
-
7
-
data/README.rdoc DELETED
@@ -1,43 +0,0 @@
1
- = re_expand
2
-
3
- * http://github.com/masui/expand-ruby
4
-
5
- == DESCRIPTION:
6
-
7
- Generates all the text strings which match the given regexp.
8
- If a filter pattern is given, the output is filtered by the pattern.
9
-
10
- == SYNOPSIS:
11
-
12
- require 're_expand'
13
- "test (a|b|c)".expand { |s,a|
14
- puts s
15
- }
16
- # "test a", "test b", ...
17
- "(a|b)(1|2)".expand
18
- # => ['a1', 'a2', 'b1', 'b2']
19
-
20
- == LICENSE:
21
-
22
- (The MIT License)
23
-
24
- Copyright (c) 2012 Toshiyuki Masui
25
-
26
- Permission is hereby granted, free of charge, to any person obtaining
27
- a copy of this software and associated documentation files (the
28
- 'Software'), to deal in the Software without restriction, including
29
- without limitation the rights to use, copy, modify, merge, publish,
30
- distribute, sublicense, and/or sell copies of the Software, and to
31
- permit persons to whom the Software is furnished to do so, subject to
32
- the following conditions:
33
-
34
- The above copyright notice and this permission notice shall be
35
- included in all copies or substantial portions of the Software.
36
-
37
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
38
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
39
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
40
- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
41
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
42
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
43
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/script/console DELETED
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # File: script/console
3
- irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
4
-
5
- libs = " -r irb/completion"
6
- # Perhaps use a console_lib to store any extra methods I may want available in the cosole
7
- # libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
8
- libs << " -r #{File.dirname(__FILE__) + '/../lib/re_expand.rb'}"
9
- puts "Loading re_expand gem"
10
- exec "#{irb} #{libs} --simple-prompt"
data/script/destroy DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
- APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
-
4
- begin
5
- require 'rubigen'
6
- rescue LoadError
7
- require 'rubygems'
8
- require 'rubigen'
9
- end
10
- require 'rubigen/scripts/destroy'
11
-
12
- ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
- RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
- RubiGen::Scripts::Destroy.new.run(ARGV)
data/script/generate DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
- APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
-
4
- begin
5
- require 'rubigen'
6
- rescue LoadError
7
- require 'rubygems'
8
- require 'rubigen'
9
- end
10
- require 'rubigen/scripts/generate'
11
-
12
- ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
- RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
- RubiGen::Scripts::Generate.new.run(ARGV)
@@ -1,32 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- module ReExpand
4
- class GeneratorTest < Test::Unit::TestCase
5
- def setup
6
- end
7
-
8
- def teardown
9
- end
10
-
11
- def test_clock
12
- g = Generator.new
13
- g.add '(時計|時間|時刻)を(0|1|2|3|4|5|6|7|8|9|10|11|12)時に(セットする|設定する|あわせる)', 'set time #{$2}:00'
14
- res = g.generate(' 10 ')
15
- assert res[0].member?(['時刻を10時に設定する','set time 10:00'])
16
- assert res[0].member?(['時計を10時にセットする','set time 10:00'])
17
- assert !res[0].member?(['時計を8時にセットする','set time 8:00'])
18
- end
19
-
20
- def test_substring
21
- g = Generator.new
22
- g.add '(a)bcd(e(fg)h)i(jk)', '#{$1}/#{$2}/#{$3}/#{$4}'
23
- res = g.generate(' b ')
24
- assert res[0].member?(['abcdefghijk', 'a/efgh/fg/jk'])
25
- assert !res[0].member?(['abcdefghijk', 'a/fgh/fg/jk'])
26
- g.add '(ab|cd)efg(hij|klm)n', '#{$1}/#{$2}'
27
- res = g.generate(' ef ')
28
- assert res[0].member?(['abefghijn', 'ab/hij'])
29
- assert res[0].member?(['cdefgklmn', 'cd/klm'])
30
- end
31
- end
32
- end
data/test/test_helper.rb DELETED
@@ -1,3 +0,0 @@
1
- require 'stringio'
2
- require 'test/unit'
3
- require File.dirname(__FILE__) + '/../lib/re_expand'
@@ -1,36 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- require File.dirname(__FILE__) + '/test_helper.rb'
3
-
4
- module ReExpand
5
- class TestReExpand < Test::Unit::TestCase
6
-
7
- def setup
8
- end
9
-
10
- def test_truth
11
- assert true
12
- end
13
-
14
- def test_array
15
- e = "(月|火|水|木|金)曜(1|2|3|4|5|6)限".expand
16
- assert_equal e.class, Array
17
- assert_equal e.length, 30
18
- end
19
-
20
- def test_2
21
- "(月|火|水|木|金)曜(1|2|3|4|5|6)限".expand { |s,a|
22
- assert_equal a.length, 2
23
- }
24
-
25
- e = "(月|火|水|木|金)曜(1|2|3|4|5|6)限".expand(' 1 ')
26
- assert_equal e.length, 5
27
-
28
- '(ab|cd)*'.expand(/bc/){ |s,a|
29
- assert_equal a.length, 1
30
- assert s =~ /abcd/
31
- }
32
-
33
- end
34
-
35
- end
36
- end
data/test/test_scanner.rb DELETED
@@ -1,42 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- module ReExpand
4
- class ScannerTest < Test::Unit::TestCase
5
- def setup
6
- end
7
-
8
- def teardown
9
- end
10
-
11
- def test_1
12
- s = Scanner.new('a*d')
13
- assert_equal s.gettoken, 'a'
14
- assert_equal s.gettoken, '*'
15
- assert_equal s.gettoken, 'd'
16
- end
17
-
18
- def test_2
19
- s = Scanner.new('a+d')
20
- assert_equal s.gettoken, 'a'
21
- assert_equal s.gettoken, '+'
22
- assert_equal s.gettoken, 'd'
23
- end
24
-
25
- def test_3
26
- s = Scanner.new('ab*cd')
27
- assert_equal s.gettoken, 'ab'
28
- assert_equal s.gettoken, '*'
29
- assert_equal s.gettoken, 'cd'
30
- end
31
-
32
- def test_4
33
- s = Scanner.new("(a\tb|c\td)")
34
- assert_equal s.gettoken, "("
35
- assert_equal s.gettoken, "a\tb"
36
- assert_equal s.gettoken, '|'
37
- assert_equal s.gettoken, "c\td"
38
- assert_equal s.gettoken, ')'
39
- end
40
- end
41
- end
42
-