source2md 0.0.15 → 0.0.17

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: e6729b84590ef4ebe43528414aa73d6acd79d9171c813c4a8de9acd7148c9115
4
- data.tar.gz: 0b5d54093161840a33b2ce104752883e50e582dda9e7dc925767c83ef6f8ab05
3
+ metadata.gz: 2d239ae5a48c121dc61a4fcd811cf6572f32b1ee793bae58a2a6c69f4e815d0f
4
+ data.tar.gz: 748a3da2af4129d894031af00b71b0e4553e4a21018b84a2d12e0f646ab1ce12
5
5
  SHA512:
6
- metadata.gz: 81e2f855af240b3ea35c887f6bb6275eb699702934f62a8f13b86e5c0abfe4dcf0b77e7ffd17d2f17784565da8f92795ee1a35416226813c91269b247b2fe8f5
7
- data.tar.gz: 51272d19c77da2481488acecc3a30eb97b8073ce8e2b1c9264252e0d738974223327f8a30eadc7146feefe20b4e6a76dd63a523b1345f3f149125cb950026678
6
+ metadata.gz: 4fa15b238f101e8da2f2f2f8a997e98697c032af2b6674b7896ae7ce0b325f695e213c1b321b8989bc58a9a448bc9d030dccd0251b2473f738ac5e0a0e920957
7
+ data.tar.gz: a7d8ca07d2bd122437b711b9ce90387783e1d96a560b422c1c83cd745f062656c4ab0cde8239532c611fb898fcb7d98396bd3d447975b558e93713bf85cd2d4d
data/.gitignore CHANGED
@@ -2,3 +2,4 @@
2
2
  /*.gem
3
3
  /pkg
4
4
  /spec/.all_test_result.txt
5
+ /*.el
@@ -0,0 +1,41 @@
1
+ #+hidden: true
2
+ require "./setup"
3
+
4
+ puts Source2MD::Element.new(<<~EOS).to_md
5
+ # ```
6
+ # foo
7
+ # ```
8
+ EOS
9
+
10
+ # >> head: {}
11
+ # >> body: "# ```\n# foo\n# ```\n"
12
+ # >> Source2MD::Formatter::TypeHidden => false
13
+ # >> Source2MD::Formatter::TypeEval =>
14
+ # >> Source2MD::Formatter::TypeCodeInclude =>
15
+ # >> Source2MD::Formatter::TypeRawInclude =>
16
+ # >> Source2MD::Formatter::TypeParseInclude =>
17
+ # >> Source2MD::Formatter::TypeTitle => false
18
+ # >> Source2MD::Formatter::TypeWarn =>
19
+ # >> Source2MD::Formatter::TypeAlert =>
20
+ # >> Source2MD::Formatter::TypeMethod =>
21
+ # >> Source2MD::Formatter::TypeTable => false
22
+ # >> Source2MD::Formatter::TypeSourceBlock => false
23
+ # >> Source2MD::Formatter::TypeMdHeader =>
24
+ # >> Source2MD::Formatter::TypeCodeBlock => true
25
+ # >> > -------------------------------------------------------------------------------- Source2MD::Formatter::TypeCodeBlock
26
+ # >> > {}
27
+ # >> > ------------------------------------------------------------ in
28
+ # >> > # ```
29
+ # >> > # foo
30
+ # >> > # ```
31
+ # >> >
32
+ # >> >
33
+ # >> > ------------------------------------------------------------ out
34
+ # >> > ```
35
+ # >> > foo
36
+ # >> > ```
37
+ # >> >
38
+ # >> > ------------------------------------------------------------
39
+ # >> ```
40
+ # >> foo
41
+ # >> ```
@@ -3,23 +3,29 @@ require "./setup"
3
3
 
4
4
  puts Source2MD::Element.new(<<~EOS).to_md
5
5
 
6
- #+code_include: input.yml
6
+ #+code_include: input.yml ruby:abc (AC)
7
7
  #+name:
8
8
 
9
9
  EOS
10
+ # >> head: {"code_include"=>"input.yml ruby:abc (AC)", "name"=>""}
11
+ # >> body: ""
12
+ # >> Source2MD::Formatter::TypeHidden => false
13
+ # >> Source2MD::Formatter::TypeEval =>
14
+ # >> Source2MD::Formatter::TypeCodeInclude => input.yml ruby:abc (AC)
10
15
  # >> > -------------------------------------------------------------------------------- Source2MD::Formatter::TypeCodeInclude
11
- # >> > {"code_include"=>"input.yml", "name"=>""}
16
+ # >> > {"code_include"=>"input.yml ruby:abc (AC)", "name"=>""}
12
17
  # >> > ------------------------------------------------------------ in
13
18
  # >> >
14
19
  # >> >
15
20
  # >> > ------------------------------------------------------------ out
16
- # >> > ```yml:
21
+ # >> > ```ruby:abc (AC)
17
22
  # >> > ---
18
23
  # >> > one:
19
24
  # >> > foo: 1
20
25
  # >> > ```
26
+ # >> >
21
27
  # >> > ------------------------------------------------------------
22
- # >> ```yml:
28
+ # >> ```ruby:abc (AC)
23
29
  # >> ---
24
30
  # >> one:
25
31
  # >> foo: 1
@@ -0,0 +1,43 @@
1
+ #+hidden: true
2
+ require "./setup"
3
+
4
+ puts Source2MD::Element.new(<<~EOS).to_md
5
+ # ---
6
+ # foo: bar
7
+ # ---
8
+ EOS
9
+
10
+ # >> head: {}
11
+ # >> body: "# ---\n# foo: bar\n# ---\n"
12
+ # >> Source2MD::Formatter::TypeHidden => false
13
+ # >> Source2MD::Formatter::TypeEval =>
14
+ # >> Source2MD::Formatter::TypeCodeInclude =>
15
+ # >> Source2MD::Formatter::TypeRawInclude =>
16
+ # >> Source2MD::Formatter::TypeParseInclude =>
17
+ # >> Source2MD::Formatter::TypeTitle => false
18
+ # >> Source2MD::Formatter::TypeWarn =>
19
+ # >> Source2MD::Formatter::TypeAlert =>
20
+ # >> Source2MD::Formatter::TypeMethod =>
21
+ # >> Source2MD::Formatter::TypeTable => false
22
+ # >> Source2MD::Formatter::TypeSourceBlock => false
23
+ # >> Source2MD::Formatter::TypeMdHeader => # ---
24
+ # >> # foo: bar
25
+ # >> # ---
26
+ # >>
27
+ # >> > -------------------------------------------------------------------------------- Source2MD::Formatter::TypeMdHeader
28
+ # >> > {}
29
+ # >> > ------------------------------------------------------------ in
30
+ # >> > # ---
31
+ # >> > # foo: bar
32
+ # >> > # ---
33
+ # >> >
34
+ # >> >
35
+ # >> > ------------------------------------------------------------ out
36
+ # >> > ---
37
+ # >> > foo: bar
38
+ # >> > ---
39
+ # >> >
40
+ # >> > ------------------------------------------------------------
41
+ # >> ---
42
+ # >> foo: bar
43
+ # >> ---
@@ -5,15 +5,17 @@ Source2MD.data_block_exclude = true
5
5
 
6
6
  puts Source2MD::Element.new(<<~EOS).to_md
7
7
  #+partial_code_name: foo
8
+ #+data_block_exclude: true
8
9
  a
9
10
  b
10
11
  c
11
12
  __END__
12
13
  foo
13
14
  EOS
14
- # >> head: {"partial_code_name"=>"foo"}
15
+ # >> head: {"partial_code_name"=>"foo", "data_block_exclude"=>"true"}
15
16
  # >> body: "a\n b\nc\n__END__\nfoo\n"
16
17
  # >> Source2MD::Formatter::TypeHidden => false
18
+ # >> Source2MD::Formatter::TypeEval =>
17
19
  # >> Source2MD::Formatter::TypeCodeInclude =>
18
20
  # >> Source2MD::Formatter::TypeRawInclude =>
19
21
  # >> Source2MD::Formatter::TypeParseInclude =>
@@ -26,7 +28,7 @@ EOS
26
28
  # >> Source2MD::Formatter::TypeText => false
27
29
  # >> Source2MD::Formatter::TypePartialCode => true
28
30
  # >> > -------------------------------------------------------------------------------- Source2MD::Formatter::TypePartialCode
29
- # >> > {"partial_code_name"=>"foo"}
31
+ # >> > {"partial_code_name"=>"foo", "data_block_exclude"=>"true"}
30
32
  # >> > ------------------------------------------------------------ in
31
33
  # >> > a
32
34
  # >> > b
@@ -0,0 +1,34 @@
1
+ #+hidden: true
2
+ require "./setup"
3
+
4
+ puts Source2MD::Element.new(<<~EOS).to_md
5
+ # > foo
6
+ EOS
7
+
8
+ # >> head: {}
9
+ # >> body: "# > foo\n"
10
+ # >> Source2MD::Formatter::TypeHidden => false
11
+ # >> Source2MD::Formatter::TypeEval =>
12
+ # >> Source2MD::Formatter::TypeCodeInclude =>
13
+ # >> Source2MD::Formatter::TypeRawInclude =>
14
+ # >> Source2MD::Formatter::TypeParseInclude =>
15
+ # >> Source2MD::Formatter::TypeTitle => false
16
+ # >> Source2MD::Formatter::TypeWarn =>
17
+ # >> Source2MD::Formatter::TypeAlert =>
18
+ # >> Source2MD::Formatter::TypeMethod =>
19
+ # >> Source2MD::Formatter::TypeTable => false
20
+ # >> Source2MD::Formatter::TypeSourceBlock => false
21
+ # >> Source2MD::Formatter::TypeMdHeader =>
22
+ # >> Source2MD::Formatter::TypeCodeBlock => false
23
+ # >> Source2MD::Formatter::TypeQuote => # > foo
24
+ # >> > -------------------------------------------------------------------------------- Source2MD::Formatter::TypeQuote
25
+ # >> > {}
26
+ # >> > ------------------------------------------------------------ in
27
+ # >> > # > foo
28
+ # >> >
29
+ # >> >
30
+ # >> > ------------------------------------------------------------ out
31
+ # >> > > foo
32
+ # >> >
33
+ # >> > ------------------------------------------------------------
34
+ # >> > foo
@@ -2,18 +2,41 @@
2
2
  require "./setup"
3
3
 
4
4
  puts Source2MD::Element.new(<<~EOS).to_md
5
- #+BEGIN_SRC diff xxx:yyy hidden!
5
+ #+BEGIN_SRC diff xxx:yyy data_block_exclude!
6
6
  (foo)
7
+ __END__
8
+ xxx
7
9
  #+END_SRC
8
10
  EOS
11
+ # >> head: {}
12
+ # >> body: "#+BEGIN_SRC diff xxx:yyy data_block_exclude!\n(foo)\n__END__\nxxx\n#+END_SRC\n"
13
+ # >> Source2MD::Formatter::TypeHidden => false
14
+ # >> Source2MD::Formatter::TypeEval =>
15
+ # >> Source2MD::Formatter::TypeCodeInclude =>
16
+ # >> Source2MD::Formatter::TypeRawInclude =>
17
+ # >> Source2MD::Formatter::TypeParseInclude =>
18
+ # >> Source2MD::Formatter::TypeTitle => false
19
+ # >> Source2MD::Formatter::TypeWarn =>
20
+ # >> Source2MD::Formatter::TypeAlert =>
21
+ # >> Source2MD::Formatter::TypeMethod =>
22
+ # >> Source2MD::Formatter::TypeTable => false
23
+ # >> Source2MD::Formatter::TypeSourceBlock => true
9
24
  # >> > -------------------------------------------------------------------------------- Source2MD::Formatter::TypeSourceBlock
10
25
  # >> > {}
11
26
  # >> > ------------------------------------------------------------ in
12
- # >> > #+BEGIN_SRC diff xxx:yyy hidden!
27
+ # >> > #+BEGIN_SRC diff xxx:yyy data_block_exclude!
13
28
  # >> > (foo)
29
+ # >> > __END__
30
+ # >> > xxx
14
31
  # >> > #+END_SRC
15
32
  # >> >
33
+ # >> >
16
34
  # >> > ------------------------------------------------------------ out
35
+ # >> > ```diff xxx:yyy
36
+ # >> > (foo)
37
+ # >> > ```
17
38
  # >> >
18
39
  # >> > ------------------------------------------------------------
19
- # >>
40
+ # >> ```diff xxx:yyy
41
+ # >> (foo)
42
+ # >> ```
data/lib/source2md/cli.rb CHANGED
@@ -4,6 +4,7 @@ module Source2MD
4
4
  class_option :xmp_out_exclude, type: :boolean, aliases: "-x", default: false
5
5
  class_option :data_block_exclude, type: :boolean, default: false
6
6
  class_option :readonly, type: :boolean, aliases: "-r", default: true
7
+ class_option :oneline, type: :boolean, aliases: "-1", default: false
7
8
  class_option :lang_default, type: :string, aliases: "-l", default: "ruby"
8
9
  class_option :prefix_re, type: :string
9
10
  class_option :comment_re, type: :string
@@ -19,6 +20,7 @@ module Source2MD
19
20
  Source2MD.xmp_out_exclude = options[:xmp_out_exclude]
20
21
  Source2MD.data_block_exclude = options[:data_block_exclude]
21
22
  Source2MD.readonly = options[:readonly]
23
+ Source2MD.oneline = options[:oneline]
22
24
  Source2MD.lang_default = options[:lang_default]
23
25
 
24
26
  Source2MD::RE.update do |e|
@@ -2,7 +2,7 @@ module Source2MD
2
2
  class Element
3
3
  PLUGINS = [
4
4
  Formatter::TypeHidden, # #+hidden: true
5
- Formatter::TypeEval, # #+eval:
5
+ Formatter::TypeEval, # #+eval:
6
6
  Formatter::TypeCodeInclude, # #+code_include: path/to/foo.html xml:SAMPLE.xml
7
7
  Formatter::TypeRawInclude, # #+raw_include: path/to/file.txt
8
8
  Formatter::TypeParseInclude, # #+parse_include: path/to/file.txt
@@ -12,8 +12,20 @@ module Source2MD
12
12
  Formatter::TypeMethod, # #+name: foo
13
13
  Formatter::TypeTable, # # |-
14
14
  Formatter::TypeSourceBlock, # #+BEGIN_SRC
15
+
16
+ # Type that just removes the comment and does not wrap it
17
+ Formatter::TypeMdHeader, # # ---
18
+ Formatter::TypeCodeBlock, # # ```
19
+ Formatter::TypeQuote, # # > xxx
20
+ Formatter::TypeList, # # - xxx or 1. xxx
21
+
22
+ # Sentence (automatic wrap)
15
23
  Formatter::TypeText, # # foo
24
+
25
+ # Code block without wrapping
16
26
  Formatter::TypePartialCode, # 1 + 2 # => 3
27
+
28
+ # If not all match
17
29
  Formatter::TypeElse,
18
30
  ]
19
31
 
@@ -0,0 +1,19 @@
1
+ module Source2MD
2
+ module Formatter
3
+ class TypeCodeBlock < Base
4
+
5
+ # "# ```"
6
+ def self.regexp
7
+ %r{#{RE.meta_re}\s+```}
8
+ end
9
+
10
+ def self.accept?(element)
11
+ element.body.match?(regexp)
12
+ end
13
+
14
+ def to_md
15
+ element.body.remove(TypeText.regexp)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,20 @@
1
+ module Source2MD
2
+ module Formatter
3
+ class TypeList < Base
4
+
5
+ # "# 1. foo"
6
+ # "# - foo"
7
+ def self.regexp
8
+ %r{#{RE.meta_re}\s+(?:\d\.|-)\s+\S+}
9
+ end
10
+
11
+ def self.accept?(element)
12
+ element.body.match?(regexp)
13
+ end
14
+
15
+ def to_md
16
+ element.body.remove(TypeText.regexp)
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,17 @@
1
+ module Source2MD
2
+ module Formatter
3
+ class TypeMdHeader < Base
4
+ def self.regexp
5
+ /#{RE.meta_re} ---\n.* ---\n/m
6
+ end
7
+
8
+ def self.accept?(element)
9
+ element.body.match(regexp)
10
+ end
11
+
12
+ def to_md
13
+ element.body.remove(TypeText.regexp)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -12,8 +12,8 @@ module Source2MD
12
12
  private
13
13
 
14
14
  def body
15
- if Source2MD.data_block_exclude
16
- element.body.sub(/^__END__\R.*/m, "")
15
+ if element.head["data_block_exclude"] || Source2MD.data_block_exclude
16
+ TextHelper.data_block_exclude(element.body)
17
17
  else
18
18
  element.body
19
19
  end
@@ -0,0 +1,17 @@
1
+ module Source2MD
2
+ module Formatter
3
+ class TypeQuote < Base
4
+ def self.regexp
5
+ /#{RE.meta_re}\s+\>\s+\S+/
6
+ end
7
+
8
+ def self.accept?(element)
9
+ element.body.match(regexp)
10
+ end
11
+
12
+ def to_md
13
+ element.body.remove(TypeText.regexp)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,31 +1,53 @@
1
1
  module Source2MD
2
2
  module Formatter
3
3
  class TypeSourceBlock < Base
4
+ OPTION_KEYS = [
5
+ "hidden!",
6
+ "data_block_exclude!",
7
+ ]
8
+
4
9
  def self.accept?(element)
5
10
  element.body.match?(%r{#{RE.meta_re}\+BEGIN_SRC})
6
11
  end
7
12
 
8
13
  def to_md
9
- if code_block_desc_keywords.include?("hidden!")
14
+ if option_list.include?("hidden!")
10
15
  return ""
11
16
  end
12
- CodeBlock.new(body, desc: code_block_desc).to_md
17
+ CodeBlock.new(body, desc: clean_descs.join(" ").presence).to_md
13
18
  end
14
19
 
15
20
  private
16
21
 
17
22
  def body
18
- element.body.match(%r{#{RE.meta_re}\+BEGIN_SRC.*?\R(.*)#{RE.meta_re}\+END_SRC}m).captures.first
23
+ content = element.body.match(%r{#{RE.meta_re}\+BEGIN_SRC.*?\R(.*)#{RE.meta_re}\+END_SRC}m).captures.first
24
+ data_block_exclude(content)
19
25
  end
20
26
 
21
- def code_block_desc
27
+ def desc_line
22
28
  if md = element.body.match(%r{#{RE.meta_re}\+BEGIN_SRC (.+)\R})
23
29
  md.captures.first
24
30
  end
25
31
  end
26
32
 
27
- def code_block_desc_keywords
28
- code_block_desc.to_s.split(/\s+/).to_set
33
+ def option_list
34
+ @option_list ||= desc_line.to_s.split(/\s+/).to_set
35
+ end
36
+
37
+ def data_block_exclude(content)
38
+ if data_block_exclude?
39
+ TextHelper.data_block_exclude(content)
40
+ else
41
+ content
42
+ end
43
+ end
44
+
45
+ def data_block_exclude?
46
+ option_list.include?("data_block_exclude!") || Source2MD.data_block_exclude
47
+ end
48
+
49
+ def clean_descs
50
+ option_list - OPTION_KEYS
29
51
  end
30
52
  end
31
53
  end
@@ -1,13 +1,16 @@
1
1
  module Source2MD
2
2
  module Formatter
3
3
  class TypeText < Base
4
+
4
5
  # "# xxx"
5
6
  # "#"
6
- REGEXP = %r{#{RE.meta_re}( |$)}
7
+ def self.regexp
8
+ %r{#{RE.meta_re}( |$)}
9
+ end
7
10
 
8
11
  def self.accept?(element)
9
12
  if element.body.present?
10
- element.body.lines.all? { |e| e.match?(REGEXP) }
13
+ element.body.lines.all? { |e| e.match?(regexp) }
11
14
  end
12
15
  end
13
16
 
@@ -18,13 +21,17 @@ module Source2MD
18
21
  private
19
22
 
20
23
  def body
21
- s = element.body.remove(REGEXP)
24
+ s = element.body.remove(self.class.regexp)
22
25
  if element.head["squish"] == "true"
23
26
  s = TextHelper.squish(s)
24
27
  end
25
- if element.head["oneline"] == "true"
28
+
29
+ case
30
+ when element.head["oneline"] == "false"
31
+ when element.head["oneline"] == "true" || Source2MD.oneline
26
32
  s = TextHelper.oneline(s)
27
33
  end
34
+
28
35
  if element.head["hankaku_kana"] == "true"
29
36
  s = TextHelper.hankaku_kana(s)
30
37
  end
@@ -28,6 +28,7 @@ module Source2MD
28
28
  def reset
29
29
  @meta_re = nil
30
30
  @stdout_re = nil
31
+ @text_prefix_re = nil
31
32
  end
32
33
  end
33
34
  end
@@ -7,7 +7,8 @@ module Source2MD
7
7
  end
8
8
 
9
9
  def oneline(text)
10
- text.remove(/\R+/)
10
+ text = text.gsub(/?\R/, "? ")
11
+ text = text.remove(/\R+/)
11
12
  end
12
13
 
13
14
  def squish(text)
@@ -30,5 +31,9 @@ module Source2MD
30
31
  min = text.lines.reject(&:blank?).collect { |e| e.slice(/^\s*/).size }.min
31
32
  text.remove(/^ {#{min}}/)
32
33
  end
34
+
35
+ def data_block_exclude(text)
36
+ text.sub(/^__END__\R.*/m, "")
37
+ end
33
38
  end
34
39
  end
@@ -1,3 +1,3 @@
1
1
  module Source2MD
2
- VERSION = "0.0.15"
2
+ VERSION = "0.0.17"
3
3
  end
data/lib/source2md.rb CHANGED
@@ -17,6 +17,7 @@ module Source2MD
17
17
  config_accessor(:readonly) { true }
18
18
  config_accessor(:lang_default) { "ruby" }
19
19
  config_accessor(:data_block_exclude) { false }
20
+ config_accessor(:oneline) { false }
20
21
  end
21
22
 
22
23
  require "zeitwerk"
@@ -0,0 +1,23 @@
1
+ require "spec_helper"
2
+
3
+ module Source2MD
4
+ describe do
5
+ it "works" do
6
+ actual = Element.new(<<~EOS).to_md
7
+ # ```
8
+ # foo
9
+ # ```
10
+ EOS
11
+ actual.should == <<~EOS
12
+ ```
13
+ foo
14
+ ```
15
+ EOS
16
+ end
17
+ end
18
+ end
19
+ # >> .
20
+ # >>
21
+ # >> Finished in 0.00614 seconds (files took 0.36666 seconds to load)
22
+ # >> 1 example, 0 failures
23
+ # >>
@@ -0,0 +1,23 @@
1
+ require "spec_helper"
2
+
3
+ module Source2MD
4
+ describe do
5
+ it "works" do
6
+ actual = Element.new(<<~EOS).to_md
7
+ # ---
8
+ # foo: bar
9
+ # ---
10
+ EOS
11
+ actual.should == <<~EOS
12
+ ---
13
+ foo: bar
14
+ ---
15
+ EOS
16
+ end
17
+ end
18
+ end
19
+ # >> .
20
+ # >>
21
+ # >> Finished in 0.00648 seconds (files took 0.35849 seconds to load)
22
+ # >> 1 example, 0 failures
23
+ # >>
@@ -6,6 +6,7 @@ module Source2MD
6
6
  actual = Element.new(<<~EOS).to_md
7
7
  #+partial_code_name: xxx
8
8
  #+partial_code_lang: yyy
9
+ #+data_block_exclude: true
9
10
  (foo)
10
11
  __END__
11
12
  1
@@ -0,0 +1,19 @@
1
+ require "spec_helper"
2
+
3
+ module Source2MD
4
+ describe do
5
+ it "works" do
6
+ actual = Element.new(<<~EOS).to_md
7
+ # > foo
8
+ EOS
9
+ actual.should == <<~EOS
10
+ > foo
11
+ EOS
12
+ end
13
+ end
14
+ end
15
+ # >> .
16
+ # >>
17
+ # >> Finished in 0.00637 seconds (files took 0.3615 seconds to load)
18
+ # >> 1 example, 0 failures
19
+ # >>
@@ -36,5 +36,42 @@ module Source2MD
36
36
  EOS
37
37
  actual.should == ""
38
38
  end
39
+
40
+ it "works" do
41
+ actual = Element.new(<<~EOS).to_md
42
+ #+BEGIN_SRC xxx:yyy data_block_exclude!
43
+ (foo)
44
+ __END__
45
+ xxx
46
+ #+END_SRC
47
+ EOS
48
+ actual.should == <<~EOS
49
+ ```xxx:yyy
50
+ (foo)
51
+ ```
52
+ EOS
53
+ end
39
54
  end
40
55
  end
56
+ # >> ...F
57
+ # >>
58
+ # >> Failures:
59
+ # >>
60
+ # >> 1) works
61
+ # >> Failure/Error: Unable to find - to read failed line
62
+ # >>
63
+ # >> expected: ""
64
+ # >> got: "```xxx:yyy data_block_exclude\n```\n" (using ==)
65
+ # >> Diff:
66
+ # >> @@ -1,2 +1,4 @@
67
+ # >> +```xxx:yyy data_block_exclude
68
+ # >> +```
69
+ # >> # -:47:in `block (2 levels) in <module:Source2MD>'
70
+ # >>
71
+ # >> Finished in 0.01747 seconds (files took 0.33507 seconds to load)
72
+ # >> 4 examples, 1 failure
73
+ # >>
74
+ # >> Failed examples:
75
+ # >>
76
+ # >> rspec -:40 # works
77
+ # >>
data/spec/spec_helper.rb CHANGED
@@ -10,7 +10,7 @@ Zeitwerk::Loader.eager_load_all
10
10
 
11
11
  Source2MD.logger.level = :error
12
12
  Source2MD.xmp_out_exclude = true
13
- Source2MD.data_block_exclude = true
13
+ # Source2MD.data_block_exclude = true
14
14
 
15
15
  RSpec.configure do |config|
16
16
  config.expect_with :rspec do |c|
@@ -6,6 +6,10 @@ module Source2MD
6
6
  assert { TextHelper.blank_lines_squish("A\nB\n\nC\n\n\nD") == "A\nB\n\nC\n\nD" }
7
7
  end
8
8
 
9
+ it "oneline" do
10
+ assert { TextHelper.oneline("?\nA") == "? A" }
11
+ end
12
+
9
13
  it "eol_enter" do
10
14
  assert { TextHelper.eol_enter("A") == "A\n" }
11
15
  assert { TextHelper.eol_enter("A\n\n") == "A\n" }
@@ -19,5 +23,9 @@ module Source2MD
19
23
  assert { TextHelper.space_prefix_remove(" a\n b\n") == "a\n b\n" }
20
24
  assert { TextHelper.space_prefix_remove(" a\n\n b\n") == "a\n\n b\n" }
21
25
  end
26
+
27
+ it "data_block_exclude" do
28
+ assert { TextHelper.data_block_exclude("(before)\n__END__\n(after)") == "(before)\n" }
29
+ end
22
30
  end
23
31
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: source2md
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.15
4
+ version: 0.0.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Akira Ikeda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-10 00:00:00.000000000 Z
11
+ date: 2024-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -175,11 +175,14 @@ files:
175
175
  - examples/scanner.rb
176
176
  - examples/setup.rb
177
177
  - examples/type_alert.rb
178
+ - examples/type_code_block.rb
178
179
  - examples/type_code_include.rb
179
180
  - examples/type_eval.rb
180
181
  - examples/type_hidden.rb
182
+ - examples/type_md_header.rb
181
183
  - examples/type_method.rb
182
184
  - examples/type_partial_code.rb
185
+ - examples/type_quote.rb
183
186
  - examples/type_source_block.rb
184
187
  - examples/type_table.rb
185
188
  - examples/type_text.rb
@@ -191,14 +194,18 @@ files:
191
194
  - lib/source2md/element.rb
192
195
  - lib/source2md/formatter/base.rb
193
196
  - lib/source2md/formatter/type_alert.rb
197
+ - lib/source2md/formatter/type_code_block.rb
194
198
  - lib/source2md/formatter/type_code_include.rb
195
199
  - lib/source2md/formatter/type_else.rb
196
200
  - lib/source2md/formatter/type_eval.rb
197
201
  - lib/source2md/formatter/type_hidden.rb
202
+ - lib/source2md/formatter/type_list.rb
203
+ - lib/source2md/formatter/type_md_header.rb
198
204
  - lib/source2md/formatter/type_method.rb
199
205
  - lib/source2md/formatter/type_nop.rb
200
206
  - lib/source2md/formatter/type_parse_include.rb
201
207
  - lib/source2md/formatter/type_partial_code.rb
208
+ - lib/source2md/formatter/type_quote.rb
202
209
  - lib/source2md/formatter/type_raw_include.rb
203
210
  - lib/source2md/formatter/type_source_block.rb
204
211
  - lib/source2md/formatter/type_table.rb
@@ -219,12 +226,15 @@ files:
219
226
  - spec/code_block_spec.rb
220
227
  - spec/formatter/sample.yml
221
228
  - spec/formatter/type_alert_spec.rb
229
+ - spec/formatter/type_code_block_spec.rb
222
230
  - spec/formatter/type_code_include_spec.rb
223
231
  - spec/formatter/type_eval_spec.rb
224
232
  - spec/formatter/type_hidden_spec.rb
233
+ - spec/formatter/type_md_header_spec.rb
225
234
  - spec/formatter/type_method_spec.rb
226
235
  - spec/formatter/type_parse_include_spec.rb
227
236
  - spec/formatter/type_partial_code_spec.rb
237
+ - spec/formatter/type_quote_spec.rb
228
238
  - spec/formatter/type_raw_include_spec.rb
229
239
  - spec/formatter/type_source_block_spec.rb
230
240
  - spec/formatter/type_table_spec.rb
@@ -254,7 +264,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
254
264
  - !ruby/object:Gem::Version
255
265
  version: '0'
256
266
  requirements: []
257
- rubygems_version: 3.4.22
267
+ rubygems_version: 3.5.4
258
268
  signing_key:
259
269
  specification_version: 4
260
270
  summary: Markdown generator from source code
@@ -262,12 +272,15 @@ test_files:
262
272
  - spec/code_block_spec.rb
263
273
  - spec/formatter/sample.yml
264
274
  - spec/formatter/type_alert_spec.rb
275
+ - spec/formatter/type_code_block_spec.rb
265
276
  - spec/formatter/type_code_include_spec.rb
266
277
  - spec/formatter/type_eval_spec.rb
267
278
  - spec/formatter/type_hidden_spec.rb
279
+ - spec/formatter/type_md_header_spec.rb
268
280
  - spec/formatter/type_method_spec.rb
269
281
  - spec/formatter/type_parse_include_spec.rb
270
282
  - spec/formatter/type_partial_code_spec.rb
283
+ - spec/formatter/type_quote_spec.rb
271
284
  - spec/formatter/type_raw_include_spec.rb
272
285
  - spec/formatter/type_source_block_spec.rb
273
286
  - spec/formatter/type_table_spec.rb