export_strings 0.1.1.dev → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e21380cd54e9dc9ae6e6997e81fa6cd42d906d85a04cdf3fb36acee14c528c5d
4
- data.tar.gz: 30cc394113e1930dfa50e041613185fff8299c498a733f7d2e27a5cc3551825d
3
+ metadata.gz: 01ab06d2a7a05856a986c9fd06628dfa632ff7459c2c3c64e71080eb9cdb3d4d
4
+ data.tar.gz: 247cb0c82d133169ed5af2d410b2a4dfcd1bf2a564a2957284159b8facaa2dc8
5
5
  SHA512:
6
- metadata.gz: 0463f6e011828bc681e5949b8c49ed068d49874666b929600d7b45b813bc2caa92ad68ea7836fd22b06a7cc2e466aa502625dd4e1e32c037e5009b33c4826714
7
- data.tar.gz: 83b2bb92b4d376ee065f9b56f78fe50af3383a373e45042a9d1dc14dded25dcb8d666079158cc6dc53041d5558e98c3ee2e91a9b5c07f96d50b756d1abe08a37
6
+ metadata.gz: 931b2c46ccf51b73a41da64f4883a9e945babd11998a7db02137f0a6a04d4d0af02d19d40c2edeacf3979cf88d055a4f7092ac7ed6b2c2587f75e307c36c3d01
7
+ data.tar.gz: 61dc2265e7c793f7c571bea68a28b9765e7755b6f82edaf1f3ad1bcb5269d3ec74edacd52727496a8e7d6a62585091720eae81023cd795dcb0fd1e4d60ce68b5
@@ -1,4 +1,8 @@
1
1
  # export_strings chagelogs
2
2
  ## 0.1.1.dev
3
3
  - Implement 60%
4
- - Export strings from easy .rb file
4
+ - Export strings from easy .rb file
5
+
6
+ ## 0.2.0.dev
7
+ - Implement 90%
8
+ - Export strings from nomal .rb file
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- export_strings (0.1.1.dev)
4
+ export_strings (0.2.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -21,12 +21,11 @@ Or install it yourself as:
21
21
  ```rb
22
22
  require 'export_strings'
23
23
 
24
- ExportString.execute rb_file_path
24
+ ExportStrings.execute rb_file_path
25
25
 
26
26
  => [String, String, String, String]
27
27
  ```
28
28
 
29
-
30
29
  ## Example
31
30
 
32
31
  ```rb
@@ -43,6 +42,14 @@ class Example
43
42
  def str2
44
43
  "I like gohan. Do you like gohan.Oh Yeah."
45
44
  end
45
+
46
+ def str3
47
+ "#{hello} Mikel"
48
+ end
49
+
50
+ def hello
51
+ 'hello world'
52
+ end
46
53
  end
47
54
 
48
55
  # =======your irb console=======
@@ -51,25 +58,29 @@ require 'export_strings'
51
58
  pp ExportStrings.execute 'example.rb'
52
59
 
53
60
  [" SELECT *\n" + " FROM users\n" + " WHERE id > 100\n",
54
- "I like gohan. Do you like gohan.Oh Yeah."]
61
+ "I like gohan. Do you like gohan.Oh Yeah.",
62
+ "\#{hello} Mikel",
63
+ "hello world"]
55
64
 
56
- => [" SELECT *\n FROM users\n WHERE id > 100\n", "I like gohan. Do you like gohan.Oh Yeah."]
65
+ => ["SELECT *\n FROM users\n WHERE id > 100\n", "I like gohan. Do you like gohan.Oh Yeah.", "\#{hello} Mikel", "hello world"]
57
66
 
58
- ```
67
+ pp ExportStrings.execute 'example.rb', with_embexpr: false
59
68
 
60
- ## Development
61
-
62
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
69
+ [" SELECT *\n" + " FROM users\n" + " WHERE id > 100\n",
70
+ "I like gohan. Do you like gohan.Oh Yeah.",
71
+ " Mikel",
72
+ "hello world"]
63
73
 
64
- 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).
74
+ => ["SELECT *\n FROM users\n WHERE id > 100\n", "I like gohan. Do you like gohan.Oh Yeah.", " Mikel", "hello world"]
75
+ ```
65
76
 
66
77
  ## Schedule
67
78
 
68
79
  ### I want to develop this to make gem of format or parce.
69
80
 
70
81
  - Implement to export from singleton_method
71
- - Implement to export from string interpolation
72
- - Implement to export from `hoge ? 'page' : 'peke'`
82
+ - ~~Implement to export from string interpolation~~ fix
83
+ - ~~Implement to export from `hoge ? 'page' : 'peke'`~~ fix
73
84
 
74
85
  ## Contributing
75
86
 
@@ -78,7 +89,3 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/tashir
78
89
  ## License
79
90
 
80
91
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
81
-
82
- ## Code of Conduct
83
-
84
- Everyone interacting in the ExportStrings project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/export_strings/blob/master/CODE_OF_CONDUCT.md).
@@ -1,4 +1,5 @@
1
1
  class Example
2
+ @pokemon = 'pokemon'
2
3
 
3
4
  def str
4
5
  <<-SQL
@@ -35,7 +36,10 @@ a asdfasdfasdfasdfsh
35
36
  GROUP BY gender
36
37
  HAVING 100 > Max(#{hogeo})
37
38
  AND HAVING 1000 < Max(#{test})
38
- #{!!test ? 'page' : 'hoge'}
39
+ AND HAVING 1000 < Max(#{String.new})
40
+ AND HAVING 1000 < Max(#{test; test})
41
+ AND HAVING 1000 < Max(#{@pokemon})
42
+ #{!!test ? 'hogeo' : 'hoge'}
39
43
  "
40
44
  end
41
45
 
@@ -53,5 +57,39 @@ a asdfasdfasdfasdfsh
53
57
  def single_auot
54
58
  'single_quot_str'
55
59
  end
60
+ end
61
+
62
+ class Example2
63
+ def hogeo2
64
+ 'test'
65
+ "test"
66
+ 'test' + "test"
67
+ 'test' << 'test'
68
+ end
56
69
 
70
+ def test2
71
+ 'hi'
72
+ end
57
73
  end
74
+
75
+ class Example
76
+ def str1
77
+ <<-SQL
78
+ SELECT *
79
+ FROM users
80
+ WHERE id > 100
81
+ SQL
82
+ end
83
+
84
+ def str2
85
+ "I like gohan. Do you like gohan.Oh Yeah."
86
+ end
87
+
88
+ def str3
89
+ "#{hello} Mikel"
90
+ end
91
+
92
+ def hello
93
+ 'hello world'
94
+ end
95
+ end
@@ -0,0 +1,64 @@
1
+ require 'ripper'
2
+
3
+ module ExportStrings
4
+ class ByLex
5
+ class << self
6
+ def execute(rb_text)
7
+ @string_flag = false
8
+ @embexpr_flag = false
9
+ @str = ''
10
+ results = []
11
+ Ripper.lex(rb_text).each do |ary_code|
12
+ code_type = ary_code[1]
13
+ code_content = ary_code[2]
14
+ if embexpr_flag(code_type)
15
+ @str << code_content
16
+ next
17
+ end
18
+
19
+ if string_flag(code_type)
20
+ next if code_type == :on_tstring_beg || code_type == :on_heredoc_beg
21
+
22
+ @str << code_content
23
+ elsif !string_flag(code_type) && !@str.empty?
24
+ results.push @str
25
+ @str = ''
26
+ end
27
+ end
28
+ results
29
+ end
30
+
31
+ private
32
+
33
+ # string_flag = trueのときは
34
+ # on_tstring_beg ~ on_tstring_end || on_heredoc_beg ~ on_heredoc_endまでを
35
+ # 文字列として扱う
36
+ def string_flag(code_type)
37
+ @string_flag = case code_type
38
+ when :on_tstring_beg
39
+ true
40
+ when :on_heredoc_beg
41
+ true
42
+ when :on_tstring_end
43
+ false
44
+ when :on_heredoc_end
45
+ false
46
+ else
47
+ @string_flag
48
+ end
49
+ end
50
+
51
+ # 文字列展開対応
52
+ def embexpr_flag(code_type)
53
+ @embexpr_flag = case code_type
54
+ when :on_embexpr_beg
55
+ true
56
+ when :on_embexpr_end
57
+ false
58
+ else
59
+ @embexpr_flag
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,45 @@
1
+ require 'ripper'
2
+
3
+ module ExportStrings
4
+ # 文字列展開は含めない
5
+ class BySexp
6
+ class << self
7
+ def execute(rb_text)
8
+ str_content_nodes = recursively_push_for_str_content_nodes Ripper.sexp(rb_text), []
9
+ content_nodes2str_ary str_content_nodes
10
+ end
11
+
12
+ private
13
+
14
+ # 再帰的にstring_literal nodeを集めてくる
15
+ def recursively_push_for_str_content_nodes(tree, nodes)
16
+ tree.each do |node|
17
+ if node.class == Array && node[0] == :string_content
18
+ nodes << node
19
+ elsif node.class == Array
20
+ recursively_push_for_str_content_nodes(node, nodes)
21
+ end
22
+ end
23
+ nodes
24
+ end
25
+
26
+ # nodesをstringsに変換して返す
27
+ def content_nodes2str_ary(nodes)
28
+ nodes.map { |node| str_content_node2str node, '' }
29
+ end
30
+
31
+ # 各nodeをstringに変換する
32
+ def str_content_node2str(string_content_node, str)
33
+ string_content_node.each do |leaf|
34
+ if leaf.class == Array && leaf[0] == :@tstring_content
35
+ # 通常のstringが格納される時
36
+ str << leaf[1]
37
+ elsif leaf.class == Array
38
+ str_content_node2str(leaf, str)
39
+ end
40
+ end
41
+ str
42
+ end
43
+ end
44
+ end
45
+ end
@@ -1,42 +1,16 @@
1
- require 'ripper'
1
+ require 'export_strings/by_lex'
2
+ require 'export_strings/by_sexp'
2
3
 
3
4
  module ExportStrings
4
5
  class Core
5
6
  class << self
6
- def execute(rb_text)
7
- @str_nodes = []
8
- recursively_push_str_nodes Ripper.sexp(rb_text)
9
- to_strings @str_nodes
7
+ def execute(rb_text, with_embexpr: true)
8
+ with_embexpr ? ByLex.execute(rb_text) : BySexp.execute(rb_text)
10
9
  end
11
10
 
12
- private
13
-
14
- def recursively_push_str_nodes(tree)
15
- tree.each do |node|
16
- if node.class == Array && node[0] == :string_content
17
- @str_nodes << node
18
- elsif node.class == Array
19
- recursively_push_str_nodes(node)
20
- end
21
- end
22
- end
23
-
24
- def to_strings(nodes)
25
- nodes.map do |node|
26
- @string = ''
27
- str_content_node2str node
28
- end
29
- end
30
-
31
- def str_content_node2str(string_content_node)
32
- string_content_node.each do |leaf|
33
- if leaf.class == Array && leaf[0] == :@tstring_content
34
- @string << leaf[1]
35
- elsif leaf.class == Array
36
- str_content_node2str(leaf)
37
- end
38
- end
39
- @string
11
+ # 文字列展開は除外したい時
12
+ def execute_with_out_embexpr(rb_text)
13
+ execute rb_text, with_embexpr: false
40
14
  end
41
15
  end
42
16
  end
@@ -1,3 +1,3 @@
1
1
  module ExportStrings
2
- VERSION = "0.1.1.dev"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: export_strings
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1.dev
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tashiro
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-05-28 00:00:00.000000000 Z
11
+ date: 2019-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -74,6 +74,8 @@ files:
74
74
  - example/example.rb
75
75
  - export_strings.gemspec
76
76
  - lib/export_strings.rb
77
+ - lib/export_strings/by_lex.rb
78
+ - lib/export_strings/by_sexp.rb
77
79
  - lib/export_strings/core.rb
78
80
  - lib/export_strings/version.rb
79
81
  homepage: https://github.com/tashirosota/ruby-export_strings
@@ -94,9 +96,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
94
96
  version: '0'
95
97
  required_rubygems_version: !ruby/object:Gem::Requirement
96
98
  requirements:
97
- - - ">"
99
+ - - ">="
98
100
  - !ruby/object:Gem::Version
99
- version: 1.3.1
101
+ version: '0'
100
102
  requirements: []
101
103
  rubygems_version: 3.0.3
102
104
  signing_key: