d-mark 0.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +4 -7
- data/Gemfile.lock +16 -12
- data/Guardfile +3 -0
- data/NEWS.md +11 -3
- data/README.adoc +218 -0
- data/Rakefile +13 -2
- data/d-mark.gemspec +5 -4
- data/lib/d-mark.rb +2 -0
- data/lib/d-mark/cli.rb +28 -0
- data/lib/d-mark/parser.rb +460 -0
- data/lib/{dmark → d-mark}/translator.rb +5 -3
- data/lib/d-mark/version.rb +3 -0
- data/samples/identifiers-and-patterns.dmark +418 -1
- data/samples/trivial.dmark +1 -0
- data/samples/trivial.rb +20 -0
- data/spec/d-mark/parser_spec.rb +271 -0
- data/spec/spec_helper.rb +2 -0
- metadata +30 -18
- data/README.md +0 -70
- data/lib/dmark.rb +0 -9
- data/lib/dmark/lexer.rb +0 -235
- data/lib/dmark/nodes.rb +0 -76
- data/lib/dmark/parser.rb +0 -28
- data/lib/dmark/tokens.rb +0 -49
- data/lib/dmark/version.rb +0 -3
- data/samples/identifiers-and-patterns.html +0 -59
- data/scripts/translate-to-html.rb +0 -46
- data/tasks/doc.rake +0 -13
- data/tasks/rubocop.rake +0 -6
- data/tasks/test.rake +0 -6
@@ -1,46 +0,0 @@
|
|
1
|
-
require_relative '../lib/dmark'
|
2
|
-
|
3
|
-
class MyHTMLTranslator < DMark::Translator
|
4
|
-
def handle(node)
|
5
|
-
case node
|
6
|
-
when DMark::Nodes::RootNode
|
7
|
-
handle_children(node)
|
8
|
-
when DMark::Nodes::TextNode
|
9
|
-
out << node.text
|
10
|
-
when DMark::Nodes::ElementNode
|
11
|
-
out << "<#{translate_elem_name(node.name)}>"
|
12
|
-
handle_children(node)
|
13
|
-
out << "</#{translate_elem_name(node.name)}>"
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def translate_elem_name(name)
|
18
|
-
case name
|
19
|
-
when 'listing'
|
20
|
-
'pre'
|
21
|
-
when 'firstterm', 'identifier', 'glob', 'emph', 'filename', 'class'
|
22
|
-
'i'
|
23
|
-
when 'command'
|
24
|
-
'code'
|
25
|
-
when 'p', 'dl', 'dt', 'dd', 'code', 'h1', 'h2', 'h3', 'ul', 'li'
|
26
|
-
name
|
27
|
-
else
|
28
|
-
raise "Cannot translate #{name}"
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
# Lex
|
34
|
-
begin
|
35
|
-
tokens = DMark::Lexer.new(File.read(ARGV[0])).run
|
36
|
-
rescue DMark::Lexer::LexerError => e
|
37
|
-
$stderr.puts e.message_for_tty
|
38
|
-
exit 1
|
39
|
-
end
|
40
|
-
|
41
|
-
# Parse
|
42
|
-
tree = DMark::Parser.new(tokens).run
|
43
|
-
|
44
|
-
# Translate
|
45
|
-
result = MyHTMLTranslator.new(tree).run
|
46
|
-
puts result
|
data/tasks/doc.rake
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
require 'yard'
|
2
|
-
|
3
|
-
YARD::Rake::YardocTask.new(:doc) do |yard|
|
4
|
-
yard.files = Dir['lib/**/*.rb']
|
5
|
-
yard.options = [
|
6
|
-
'--markup', 'markdown',
|
7
|
-
'--markup-provider', 'kramdown',
|
8
|
-
'--charset', 'utf-8',
|
9
|
-
'--readme', 'README.md',
|
10
|
-
'--files', 'NEWS.md,LICENSE',
|
11
|
-
'--output-dir', 'doc/yardoc',
|
12
|
-
]
|
13
|
-
end
|
data/tasks/rubocop.rake
DELETED