tbpgr_utils 0.0.49 → 0.0.50

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -78,6 +78,7 @@ Or install it yourself as:
78
78
  |[TbpgrUtils String#say](#stringsay) |say string |
79
79
  |[TbpgrUtils String#stripe](#stringstripe) |stripe string |
80
80
  |[TbpgrUtils String#surround](#stringsurround) |surround string |
81
+ |[TbpgrUtils String#to_markdown_heading](#stringto_markdown_heading) |create markdown-format heading string with Emmet-like grammar |
81
82
  |[TbpgrUtils String#to_space2_heading](#stringto_space2_heading) |create space2-format heading string with Emmet-like grammar |
82
83
  |[TbpgrUtils String#to_space4_heading](#stringto_space4_heading) |create space4-format heading string with Emmet-like grammar |
83
84
  |[TbpgrUtils String#to_tab_heading](#stringto_tab_heading) |create tab-format heading string with Emmet-like grammar |
@@ -1654,6 +1655,28 @@ result
1654
1655
 
1655
1656
  [back to list](#list)
1656
1657
 
1658
+ ### String#to_markdown_heading
1659
+ > case
1660
+ ~~~ruby
1661
+ require 'tbpgr_utils'
1662
+ 'hoge>hige'.to_markdown_heading # => '# hoge\n## hige'
1663
+ ~~~
1664
+
1665
+ \+ case
1666
+ ~~~ruby
1667
+ require 'tbpgr_utils'
1668
+
1669
+ 'hoge+hige'.to_markdown_heading # => '# hoge\n# hige'
1670
+ ~~~
1671
+
1672
+ ^ case
1673
+ ~~~ruby
1674
+ require 'tbpgr_utils'
1675
+ 'hoge>hige^hege'.to_markdown_heading # => '# hoge\n## hige\n# hege'
1676
+ ~~~
1677
+
1678
+ [back to list](#list)
1679
+
1657
1680
  ### String#to_space2_heading
1658
1681
  > case
1659
1682
  ~~~ruby
@@ -1816,6 +1839,7 @@ if you are Sublime Text2 user, you can use snippet for TbpgrUtils.
1816
1839
  https://github.com/tbpgr/tbpgr_utils_snippets
1817
1840
 
1818
1841
  ## History
1842
+ * version 0.0.50 : add String#to_markdown_heading
1819
1843
  * version 0.0.49 : add String#to_tab_heading
1820
1844
  * version 0.0.48 : add String#to_space4_heading
1821
1845
  * version 0.0.47 : add String#to_space2_heading
@@ -6,3 +6,4 @@ require 'open_classes/string/surround'
6
6
  require 'open_classes/string/to_space2_heading'
7
7
  require 'open_classes/string/to_space4_heading'
8
8
  require 'open_classes/string/to_tab_heading'
9
+ require 'open_classes/string/to_markdown_heading'
@@ -1,34 +1,37 @@
1
- # encoding: utf-8
2
- require 'active_support/core_ext/object/inclusion'
3
-
4
- # HeadingHelper
5
- module HeadingHelper
6
- private
7
- def to_heading
8
- self_chars = chars
9
- level, index, word_ret, ret = 0, 0, [], []
10
- self_chars.each_with_index do |v, index|
11
- key_word = v.in? %w{> + ^}
12
-
13
- if key_word
14
- ret << leveled_word(level, word_ret)
15
- level += v == '+' ? 0 : v == '>' ? 1 : -1
16
- word_ret = []
17
- else
18
- word_ret << v
19
- end
20
- end
21
- ret << leveled_word(level, word_ret)
22
- end
23
-
24
- def leveled_word(level, words)
25
- word = {}
26
- word[:level] = level
27
- word[:word] = words.join
28
- word
29
- end
30
-
31
- def to_head(heading, head_char)
32
- heading.reduce([]) { |ret, value|ret << "#{head_char * value[:level]}#{value[:word]}" }.join("\n")
33
- end
34
- end
1
+ # encoding: utf-8
2
+ require 'active_support/core_ext/object/inclusion'
3
+
4
+ # HeadingHelper
5
+ module HeadingHelper
6
+ private
7
+ def to_heading
8
+ self_chars = chars
9
+ level, index, word_ret, ret = 0, 0, [], []
10
+ self_chars.each_with_index do |v, index|
11
+ key_word = v.in? %w{> + ^}
12
+
13
+ if key_word
14
+ ret << leveled_word(level, word_ret)
15
+ level += v == '+' ? 0 : v == '>' ? 1 : -1
16
+ word_ret = []
17
+ else
18
+ word_ret << v
19
+ end
20
+ end
21
+ ret << leveled_word(level, word_ret)
22
+ end
23
+
24
+ def leveled_word(level, words)
25
+ word = {}
26
+ word[:level] = level
27
+ word[:word] = words.join
28
+ word
29
+ end
30
+
31
+ def to_head(heading, head_char, options = { separator: '', start_level: 0 })
32
+ heading.reduce([]) do |ret, value|
33
+ repeat = (value[:level] + options[:start_level])
34
+ ret << "#{head_char * repeat}#{options[:separator]}#{value[:word]}"
35
+ end.join("\n")
36
+ end
37
+ end
@@ -0,0 +1,37 @@
1
+ # encoding: utf-8
2
+ require 'active_support/core_ext/object/inclusion'
3
+ require 'open_classes/string/heading_helper'
4
+
5
+ class String
6
+ include HeadingHelper
7
+ # Markdown
8
+ MARKDOWN = '#'
9
+ # Separator
10
+ SEPARATOR = ' '
11
+
12
+ # create heading string with Emmet-like grammar.
13
+ #
14
+ # ==== Examples
15
+ #
16
+ # > case
17
+ #
18
+ # 'hoge>hige'.to_markdown_heading # => '# hoge\n## hige'
19
+ #
20
+ # + case
21
+ #
22
+ # 'hoge+hige'.to_markdown_heading # => '# hoge\n# hige'
23
+ #
24
+ # ^ case
25
+ #
26
+ # 'hoge>hige^hege'.to_markdown_heading # => '# hoge\n## hige\n# hege'
27
+ #
28
+ def to_markdown_heading
29
+ heading = to_heading
30
+ to_markdown heading
31
+ end
32
+
33
+ private
34
+ def to_markdown(heading)
35
+ to_head(heading, MARKDOWN, separator: SEPARATOR, start_level: 1)
36
+ end
37
+ end
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Tbpgr Utilities
4
4
  module TbpgrUtils
5
- VERSION = '0.0.49'
5
+ VERSION = '0.0.50'
6
6
  end
@@ -0,0 +1,61 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ require 'open_classes/string/to_markdown_heading'
4
+
5
+ describe String do
6
+ context :to_markdown_heading do
7
+ cases = [
8
+ {
9
+ case_no: 1,
10
+ case_title: '> case',
11
+ input: 'hoge>hige',
12
+ expected: "# hoge\n## hige",
13
+ },
14
+ {
15
+ case_no: 2,
16
+ case_title: '+ case',
17
+ input: 'hoge+hige',
18
+ expected: "# hoge\n# hige",
19
+ },
20
+ {
21
+ case_no: 3,
22
+ case_title: '^ case',
23
+ input: 'hoge>hige^hege',
24
+ expected: "# hoge\n## hige\n# hege",
25
+ },
26
+ {
27
+ case_no: 4,
28
+ case_title: 'mix case',
29
+ input: 'hoge>hige1+hige2^hege',
30
+ expected: "# hoge\n## hige1\n## hige2\n# hege",
31
+ },
32
+ ]
33
+
34
+ cases.each do |c|
35
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
36
+ begin
37
+ case_before c
38
+
39
+ # -- given --
40
+ # nothing
41
+
42
+ # -- when --
43
+ actual = c[:input].to_markdown_heading
44
+
45
+ # -- then --
46
+ expect(actual).to eq(c[:expected])
47
+ ensure
48
+ case_after c
49
+ end
50
+ end
51
+
52
+ def case_before(c)
53
+ # implement each case before
54
+ end
55
+
56
+ def case_after(c)
57
+ # implement each case after
58
+ end
59
+ end
60
+ end
61
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tbpgr_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.49
4
+ version: 0.0.50
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-02-25 00:00:00.000000000 Z
12
+ date: 2014-02-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
- requirement: &25658196 !ruby/object:Gem::Requirement
16
+ requirement: &26014848 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 4.0.1
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *25658196
24
+ version_requirements: *26014848
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
- requirement: &25657908 !ruby/object:Gem::Requirement
27
+ requirement: &26013732 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '1.3'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *25657908
35
+ version_requirements: *26013732
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &25657680 !ruby/object:Gem::Requirement
38
+ requirement: &26012736 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *25657680
46
+ version_requirements: *26012736
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &25673736 !ruby/object:Gem::Requirement
49
+ requirement: &26011836 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 2.14.1
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *25673736
57
+ version_requirements: *26011836
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: simplecov
60
- requirement: &25673436 !ruby/object:Gem::Requirement
60
+ requirement: &22451748 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: 0.8.2
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *25673436
68
+ version_requirements: *22451748
69
69
  description: Utilities
70
70
  email:
71
71
  - tbpgr@tbpgr.jp
@@ -132,6 +132,7 @@ files:
132
132
  - lib/open_classes/string/say.rb
133
133
  - lib/open_classes/string/stripe.rb
134
134
  - lib/open_classes/string/surround.rb
135
+ - lib/open_classes/string/to_markdown_heading.rb
135
136
  - lib/open_classes/string/to_space2_heading.rb
136
137
  - lib/open_classes/string/to_space4_heading.rb
137
138
  - lib/open_classes/string/to_tab_heading.rb
@@ -187,6 +188,7 @@ files:
187
188
  - spec/open_classes/string/say_spec.rb
188
189
  - spec/open_classes/string/stripe_spec.rb
189
190
  - spec/open_classes/string/surround_spec.rb
191
+ - spec/open_classes/string/to_markdown_heading_spec.rb
190
192
  - spec/open_classes/string/to_space2_heading_spec.rb
191
193
  - spec/open_classes/string/to_space4_heading_spec.rb
192
194
  - spec/open_classes/string/to_tab_heading_spec.rb
@@ -266,6 +268,7 @@ test_files:
266
268
  - spec/open_classes/string/say_spec.rb
267
269
  - spec/open_classes/string/stripe_spec.rb
268
270
  - spec/open_classes/string/surround_spec.rb
271
+ - spec/open_classes/string/to_markdown_heading_spec.rb
269
272
  - spec/open_classes/string/to_space2_heading_spec.rb
270
273
  - spec/open_classes/string/to_space4_heading_spec.rb
271
274
  - spec/open_classes/string/to_tab_heading_spec.rb