tty-markdown 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 372c2535e3de00b3681eded48af2d9fef7b1c99d
4
- data.tar.gz: 75ab67563718dc7d68d17b6738b699ac59e3cee7
3
+ metadata.gz: 44486f20a5fb0b3db0de9d760bf88e33a713aa56
4
+ data.tar.gz: 9c55823506373b0a6d95c38fa1fab6a4b38d2462
5
5
  SHA512:
6
- metadata.gz: a104de05f2d5cbfc3384663d2272d1b16bbd9c8bd2692548be8efd6174651ceb7af9616903b9e2b6f322c7bff6f34672ec9673a46513d5ba38cf2fc7e195d578
7
- data.tar.gz: 696a9c610c87f79422b4b4aee4a0f4648d12396a7b94f3109708217a388c95a086fa7bd992553d026a9b985065c41a1c6116e7e6bd5d357fd4b5bc96b76f705a
6
+ metadata.gz: 6a49d8dc74703dd156ea8646beb251c51dfc0efd0f27ccee0c29b04648c8d7aa671730d607154a3d1fb9ab0c3bf988662565a39f346fcdb95a2b3331a8c73eda
7
+ data.tar.gz: cab7e9b37d1a281ad5c9419e26881fa56f1420070d141ace550468be373885d637177927d362c537cf91c31f760704f1370a544625e420d8b07f152d357dc3bf
@@ -1,7 +1,23 @@
1
1
  # Change log
2
2
 
3
+ ## [v0.2.0] - 2018-01-29
4
+
5
+ ### Added
6
+ * Add space indented codeblock markdown conversion
7
+ * Add markdown math formula conversion
8
+ * Add markdown typogrpahic symbols conversion by Tanaka Masaki(@T-a-n-a-k-a-M-a-s-a-k-i)
9
+ * Add html entities conversion
10
+ * Add warnings about unsupported conversions for completness
11
+
12
+ ### Changed
13
+ * Change gemspec to require Ruby >= 2.0.0
14
+
15
+ ### Fixed
16
+ * Fix smart quotes to correctly encode entities
17
+
3
18
  ## [v0.1.0] - 2018-01-24
4
19
 
5
20
  * Initial implementation and release
6
21
 
7
- [v0.1.0]: https://github.com/piotrmurach/tty-reader/compare/v0.1.0
22
+ [v0.2.0]: https://github.com/piotrmurach/tty-markdown/compare/v0.1.0...v0.2.0
23
+ [v0.1.0]: https://github.com/piotrmurach/tty-markdown/compare/v0.1.0
data/README.md CHANGED
@@ -15,7 +15,7 @@
15
15
  [coverage]: https://coveralls.io/github/piotrmurach/tty-markdown
16
16
  [inchpages]: http://inch-ci.org/github/piotrmurach/tty-markdown
17
17
 
18
- > Convert a markdown documet or text into a terminal friendly output.
18
+ > Convert a markdown document or text into a terminal friendly output.
19
19
 
20
20
 
21
21
  **TTY::Markdown** provides independent markdown processing component for [TTY](https://github.com/piotrmurach/tty) toolkit.
@@ -109,7 +109,7 @@ parsed = TTY::Markdown.parse(markdown_string)
109
109
 
110
110
  ![Code highlight](https://cdn.rawgit.com/piotrmurach/tty-markdown/master/assets/headers.png)
111
111
 
112
- ### Quote
112
+ ### 1.3 Quote
113
113
 
114
114
  Given a markdown quote:
115
115
 
@@ -129,7 +129,7 @@ parsed = TTY::Markdown.parse(markdown_string)
129
129
 
130
130
  ![Code highlight](https://cdn.rawgit.com/piotrmurach/tty-markdown/master/assets/quote.png)
131
131
 
132
- ### Codeblock
132
+ ### 1.4 Codeblock
133
133
 
134
134
  The parser can highlight syntax of many programming languages. Given the markdown codeblock with language specification:
135
135
 
@@ -153,7 +153,7 @@ parsed = TTY::Markdown.parse(code_snippet)
153
153
 
154
154
  ![Code highlight](https://cdn.rawgit.com/piotrmurach/tty-markdown/master/assets/syntax_highlight.png)
155
155
 
156
- ### Table
156
+ ### 1.5 Table
157
157
 
158
158
  You can transform tables which understand the markdown alignment.
159
159
 
@@ -0,0 +1,17 @@
1
+ # name(1) - description
2
+
3
+ ## SYNOPSIS
4
+
5
+ `name` \[`OPTIONS`\] *arguments*...
6
+
7
+ ### DESCRIPTION
8
+
9
+ Paragraph describing what the tool does.
10
+
11
+ ### OPTIONS
12
+
13
+ * A
14
+ * list
15
+ * of
16
+ * available
17
+ * options
@@ -0,0 +1,6 @@
1
+ require_relative '../lib/tty-markdown'
2
+
3
+ path = File.join(__dir__, 'man.md')
4
+ out = TTY::Markdown.parse_file(path, colors: 256)
5
+
6
+ puts out
@@ -14,6 +14,17 @@ module TTY
14
14
  diamond: '◈',
15
15
  pipe: '│',
16
16
  line: '─',
17
+ hellip: '…',
18
+ laquo: '«',
19
+ laquo_space: '« ',
20
+ raquo: '»',
21
+ raquo_space: ' »',
22
+ ndash: '-',
23
+ mdash: "\u2014",
24
+ lsquo: '‘',
25
+ rsquo: '’',
26
+ ldquo: '“',
27
+ rdquo: '”',
17
28
  top_left: '┌',
18
29
  top_right: '┐',
19
30
  top_center: '┬',
@@ -22,8 +33,8 @@ module TTY
22
33
  mid_center: '┼',
23
34
  bottom_right: '┘',
24
35
  bottom_left: '└',
25
- bottom_center: '┴'
26
- }
36
+ bottom_center: '┴',
37
+ }.freeze
27
38
 
28
39
  WIN_SYMBOLS = {
29
40
  arrow: '->',
@@ -32,6 +43,17 @@ module TTY
32
43
  bar: '│',
33
44
  pipe: '|',
34
45
  line: '─',
46
+ hellip: '...',
47
+ laquo: '<<',
48
+ laquo_space: '<< ',
49
+ raquo: '>>',
50
+ raquo_space: ' >>',
51
+ ndash: '-',
52
+ mdash: "--",
53
+ lsquo: ''',
54
+ rsquo: ''',
55
+ ldquo: '"',
56
+ rdquo: '"',
35
57
  top_left: '+',
36
58
  top_right: '+',
37
59
  top_center: '+',
@@ -41,7 +63,7 @@ module TTY
41
63
  bottom_right: '+',
42
64
  bottom_left: '+',
43
65
  bottom_center: '+'
44
- }
66
+ }.freeze
45
67
 
46
68
  THEME = {
47
69
  em: :italic,
@@ -52,7 +74,7 @@ module TTY
52
74
  strong: [:yellow, :bold],
53
75
  table: :blue,
54
76
  quote: :yellow,
55
- }
77
+ }.freeze
56
78
 
57
79
  # Parse a markdown string
58
80
  #
@@ -139,12 +139,12 @@ module TTY
139
139
  end
140
140
 
141
141
  def convert_smart_quote(el, opts)
142
- inner(el, opts)
142
+ opts[:result] << TTY::Markdown.symbols[el.value]
143
143
  end
144
144
 
145
145
  def convert_codespan(el, opts)
146
146
  raw_code = el.value
147
- highlighted = SyntaxHighliter.highlight(raw_code, @color_opts)
147
+ highlighted = SyntaxHighliter.highlight(raw_code, @color_opts.merge(opts))
148
148
  code = highlighted.split("\n").map.with_index do |line, i|
149
149
  if i == 0 # first line
150
150
  line
@@ -155,6 +155,11 @@ module TTY
155
155
  opts[:result] << code.join("\n")
156
156
  end
157
157
 
158
+ def convert_codeblock(el, opts)
159
+ opts[:fenced] = false
160
+ convert_codespan(el, opts)
161
+ end
162
+
158
163
  def convert_blockquote(el, opts)
159
164
  inner(el, opts)
160
165
  end
@@ -337,6 +342,32 @@ module TTY
337
342
  end
338
343
  end
339
344
 
345
+ def convert_math(el, opts)
346
+ if opts[:prev] && opts[:prev].type == :blank
347
+ indent = ' ' * @current_indent
348
+ opts[:result] << indent
349
+ end
350
+ convert_codespan(el, opts)
351
+ opts[:result] << "\n"
352
+ end
353
+
354
+ def convert_abbreviation(el, opts)
355
+ opts[:result] << el.value
356
+ end
357
+
358
+ def convert_typographic_sym(el, opts)
359
+ opts[:result] << TTY::Markdown.symbols[el.value]
360
+ end
361
+
362
+ def convert_entity(el, opts)
363
+ opts[:result] << unicode_char(el.value.code_point)
364
+ end
365
+
366
+ # Convert codepoint to UTF-8 representation
367
+ def unicode_char(codepoint)
368
+ [codepoint].pack('U*')
369
+ end
370
+
340
371
  def convert_footnote(*)
341
372
  warning("Footnotes are not supported")
342
373
  end
@@ -348,6 +379,10 @@ module TTY
348
379
  def convert_img(*)
349
380
  warning("Images are not supported")
350
381
  end
382
+
383
+ def convert_html_element(*)
384
+ warning("HTML elements are not supported")
385
+ end
351
386
  end # Parser
352
387
  end # Markdown
353
388
  end # TTY
@@ -47,7 +47,9 @@ module TTY
47
47
  lang = guess_lang(code)
48
48
  mode = options[:mode] || TTY::Color.mode
49
49
  lines = code.dup.lines
50
- code = lines[1...-1].join + lines[-1].strip
50
+ if options[:fenced].nil?
51
+ code = lines[1...-1].join + lines[-1].strip
52
+ end
51
53
 
52
54
  lexer = Rouge::Lexer.find_fancy(lang, code) || Rouge::Lexers::PlainText
53
55
 
@@ -1,5 +1,5 @@
1
1
  module TTY
2
2
  module Markdown
3
- VERSION = '0.1.0'.freeze
3
+ VERSION = '0.2.0'.freeze
4
4
  end # TTY
5
5
  end # Markdown
@@ -20,12 +20,14 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ["lib"]
22
22
 
23
+ spec.required_ruby_version = '>= 2.0.0'
24
+
23
25
  spec.add_dependency "kramdown", '~> 1.16.2'
24
26
  spec.add_dependency "pastel", '~> 0.7.2'
25
27
  spec.add_dependency "rouge", '~> 3.1.0'
26
28
  spec.add_dependency "strings", '~> 0.1.0'
27
29
  spec.add_dependency "tty-color", '~> 0.4.2'
28
- spec.add_dependency "tty-screen", '~> 0.6.2'
30
+ spec.add_dependency "tty-screen", '~> 0.6.4'
29
31
 
30
32
  spec.add_development_dependency "bundler", "~> 1.16"
31
33
  spec.add_development_dependency "rake", "~> 10.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tty-markdown
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Murach
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-01-24 00:00:00.000000000 Z
11
+ date: 2018-01-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: kramdown
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.6.2
89
+ version: 0.6.4
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.6.2
96
+ version: 0.6.4
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: bundler
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -160,6 +160,8 @@ files:
160
160
  - bin/console
161
161
  - bin/setup
162
162
  - examples/example.md
163
+ - examples/man.md
164
+ - examples/man.rb
163
165
  - examples/marked.rb
164
166
  - lib/tty-markdown.rb
165
167
  - lib/tty/markdown.rb
@@ -182,7 +184,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
182
184
  requirements:
183
185
  - - ">="
184
186
  - !ruby/object:Gem::Version
185
- version: '0'
187
+ version: 2.0.0
186
188
  required_rubygems_version: !ruby/object:Gem::Requirement
187
189
  requirements:
188
190
  - - ">="