nora_mark 0.2beta14 → 0.2beta15
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 +4 -4
- data/README.md +2 -0
- data/lib/nora_mark/html/context.rb +24 -2
- data/lib/nora_mark/html/frontmatter_writer.rb +6 -0
- data/lib/nora_mark/html/generator.rb +1 -0
- data/lib/nora_mark/rake_task.rb +2 -2
- data/lib/nora_mark/version.rb +1 -1
- data/spec/nora_mark_spec.rb +66 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cab3cab407b40a37ddb78f770011aabd71768727
|
4
|
+
data.tar.gz: 88374067b24427c73c945f0be3fc5654875779f8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e2d49d88eb73c4d933be68140e0cd6dd0df0336aad343e6cd2dfb32ff5c03e18db38df803c4c4833d5608a57ee891f897c6f41b66997c26253c9a9ce6f4bd25d
|
7
|
+
data.tar.gz: e61233e4d76f037e19e786341f31faefed03a36cc6c0b0b8a8a85529b175ce96fc0028cae3e38517f64f9f32516ad1adaf65ad626451c48b9242e084a057d836
|
data/README.md
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
# NoraMark
|
2
|
+
|
3
|
+
[](https://gitter.im/skoji/noramark?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
2
4
|
[<img src="https://secure.travis-ci.org/skoji/noramark.png" />](http://travis-ci.org/skoji/noramark) [](https://coveralls.io/r/skoji/noramark?branch=master)
|
3
5
|
[](https://gemnasium.com/skoji/noramark)
|
4
6
|
[](http://badge.fury.io/rb/nora_mark)
|
@@ -3,6 +3,7 @@ module NoraMark
|
|
3
3
|
class Context
|
4
4
|
attr_accessor :title, :head_inserters, :lang, :stylesheets, :enable_pgroup, :render_parameter, :namespaces, :metas
|
5
5
|
def initialize(param = {})
|
6
|
+
@default_param = param
|
6
7
|
@head_inserters = []
|
7
8
|
@lang = param[:lang] || 'en'
|
8
9
|
@title = param[:title] || 'NoraMark generated document'
|
@@ -10,8 +11,8 @@ module NoraMark
|
|
10
11
|
@enable_pgroup = param[:enable_pgroup] || true
|
11
12
|
self.paragraph_style= param[:paragraph_style]
|
12
13
|
@pages = Pages.new(param[:sequence_format])
|
14
|
+
@metas = param[:metas] || []
|
13
15
|
@namespaces = {}
|
14
|
-
@metas = []
|
15
16
|
@render_parameter = {}
|
16
17
|
head_inserter do
|
17
18
|
ret = ""
|
@@ -68,7 +69,7 @@ module NoraMark
|
|
68
69
|
page = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
|
69
70
|
page << "<html xmlns=\"http://www.w3.org/1999/xhtml\""
|
70
71
|
page << @namespaces.map do |k,v|
|
71
|
-
"xmlns:#{k}=\"#{v}\""
|
72
|
+
" xmlns:#{k}=\"#{v}\""
|
72
73
|
end.join(' ')
|
73
74
|
page << " lang=\"#{@lang}\" xml:lang=\"#{@lang}\">\n"
|
74
75
|
page << "<head>\n"
|
@@ -88,6 +89,26 @@ module NoraMark
|
|
88
89
|
page << "</html>\n"
|
89
90
|
page.freeze
|
90
91
|
end
|
92
|
+
restore_metas
|
93
|
+
end
|
94
|
+
|
95
|
+
# save metadata written with Frontmatter Writer
|
96
|
+
def save_metas
|
97
|
+
@default_param[:styleheets] ||= @stylesheets if !@stylesheets.nil? && @stylesheets.size > 0
|
98
|
+
@default_param[:title] ||= @title
|
99
|
+
@default_param[:lang] ||= @lang
|
100
|
+
@default_param[:paragraph_style] ||= @paragraph_style
|
101
|
+
@default_param[:namespaces] ||= @namespaces if !@namespaces.nil? && @namespaces.size > 0
|
102
|
+
@default_param[:metas] ||= @metas if !@metas.nil? && @metas.size > 0
|
103
|
+
end
|
104
|
+
|
105
|
+
def restore_metas
|
106
|
+
@stylesheets = @default_param[:styleheets] || @stylesheets
|
107
|
+
@title = @default_param[:title] || @title
|
108
|
+
@lang = @default_param[:lang] || @lang
|
109
|
+
@paragraph_style = @default_param[:paragraph_style] || @paragraph_style
|
110
|
+
@namespaces = @default_param[:namespaces] || @namespaces
|
111
|
+
@metas = @default_param[:metas] || @metas
|
91
112
|
end
|
92
113
|
|
93
114
|
def <<(text)
|
@@ -100,6 +121,7 @@ module NoraMark
|
|
100
121
|
def set_toc toc
|
101
122
|
@pages.set_toc toc
|
102
123
|
end
|
124
|
+
|
103
125
|
def result
|
104
126
|
if !@pages.last.frozen?
|
105
127
|
end_html
|
@@ -28,6 +28,12 @@ module NoraMark
|
|
28
28
|
}
|
29
29
|
end
|
30
30
|
def write(node)
|
31
|
+
if node.yaml.keys.map(&:to_sym).include? :stylesheets
|
32
|
+
@context.stylesheets = []
|
33
|
+
end
|
34
|
+
if node.yaml.keys.map(&:to_sym).include? :meta
|
35
|
+
@context.metas = []
|
36
|
+
end
|
31
37
|
node.yaml.each {
|
32
38
|
|k,v|
|
33
39
|
writer = @writers[k.to_sym]
|
data/lib/nora_mark/rake_task.rb
CHANGED
@@ -34,9 +34,9 @@ module NoraMark
|
|
34
34
|
nora =
|
35
35
|
NoraMark::Document.parse(
|
36
36
|
File.open(t.source),
|
37
|
-
:lang => @lang,
|
37
|
+
:lang => @lang.to_s,
|
38
38
|
:sequence_format => "%0#{page_number_digits}d",
|
39
|
-
:document_name=>t.name.sub(/_[0-9]{
|
39
|
+
:document_name=>t.name.sub(/_[0-9]{#{page_number_digits}}\.xhtml/, '')) do
|
40
40
|
|doc|
|
41
41
|
@preprocessors.each do
|
42
42
|
|prepro|
|
data/lib/nora_mark/version.rb
CHANGED
data/spec/nora_mark_spec.rb
CHANGED
@@ -481,6 +481,7 @@ describe NoraMark::Document do
|
|
481
481
|
noramark = NoraMark::Document.parse(text, lang: 'ja', title: 'the title')
|
482
482
|
converted = noramark.html
|
483
483
|
expect(converted.size).to eq 3
|
484
|
+
|
484
485
|
body1 = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:body')
|
485
486
|
expect(body1.element_children[0].selector_and_children)
|
486
487
|
.to eq(
|
@@ -500,7 +501,7 @@ describe NoraMark::Document do
|
|
500
501
|
)
|
501
502
|
|
502
503
|
head3 = Nokogiri::XML::Document.parse(converted[2]).root.at_xpath('xmlns:head')
|
503
|
-
expect(head3.element_children[0].a).to eq ['title', '
|
504
|
+
expect(head3.element_children[0].a).to eq ['title', 'the title']
|
504
505
|
body3 = Nokogiri::XML::Document.parse(converted[2]).root.at_xpath('xmlns:body')
|
505
506
|
expect(body3.element_children[0].selector_and_children)
|
506
507
|
.to eq(
|
@@ -923,6 +924,70 @@ EOF
|
|
923
924
|
['h1',"2nd page"])
|
924
925
|
end
|
925
926
|
|
927
|
+
it 'specify stylesheet on each page' do
|
928
|
+
text = <<EOF
|
929
|
+
---
|
930
|
+
title: the document title
|
931
|
+
stylesheets: default.css
|
932
|
+
---
|
933
|
+
1st page.
|
934
|
+
newpage:
|
935
|
+
---
|
936
|
+
title: page 2
|
937
|
+
stylesheets: alternative.css
|
938
|
+
---
|
939
|
+
2nd page with alternative stylesheet.
|
940
|
+
newpage:
|
941
|
+
3rd page with default css.
|
942
|
+
EOF
|
943
|
+
noramark = NoraMark::Document.parse(text, lang: 'ja', title: 'the title', paragraph_style: :use_paragraph_group)
|
944
|
+
converted = noramark.html
|
945
|
+
# 1st page
|
946
|
+
head = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:head')
|
947
|
+
expect(head.element_children[0].a).to eq ['title', 'the document title']
|
948
|
+
expect(head.element_children[1].a).to eq ["link[rel='stylesheet'][type='text/css'][href='default.css']", '']
|
949
|
+
# 2nd page
|
950
|
+
head = Nokogiri::XML::Document.parse(converted[1]).root.at_xpath('xmlns:head')
|
951
|
+
expect(head.element_children[0].a).to eq ['title', 'page 2']
|
952
|
+
expect(head.element_children[1].a).to eq ["link[rel='stylesheet'][type='text/css'][href='alternative.css']", '']
|
953
|
+
# 3rd page
|
954
|
+
head = Nokogiri::XML::Document.parse(converted[2]).root.at_xpath('xmlns:head')
|
955
|
+
expect(head.element_children[0].a).to eq ['title', 'the title']
|
956
|
+
expect(head.element_children[1].a).to eq ["link[rel='stylesheet'][type='text/css'][href='default.css']", '']
|
957
|
+
end
|
958
|
+
|
959
|
+
it 'specify stylesheet on each page, with default supplied' do
|
960
|
+
text = <<EOF
|
961
|
+
---
|
962
|
+
title: document title 1st
|
963
|
+
---
|
964
|
+
1st page.
|
965
|
+
newpage:
|
966
|
+
---
|
967
|
+
title: page 2
|
968
|
+
stylesheets: alternative.css
|
969
|
+
---
|
970
|
+
2nd page with alternative stylesheet.
|
971
|
+
newpage:
|
972
|
+
3rd page with default css.
|
973
|
+
EOF
|
974
|
+
noramark = NoraMark::Document.parse(text, lang: 'ja', title: 'the title', paragraph_style: :use_paragraph_group, stylesheets: ['default.css'])
|
975
|
+
converted = noramark.html
|
976
|
+
# 1st page
|
977
|
+
head = Nokogiri::XML::Document.parse(converted[0]).root.at_xpath('xmlns:head')
|
978
|
+
expect(head.element_children[0].a).to eq ['title', 'document title 1st']
|
979
|
+
expect(head.element_children[1].a).to eq ["link[rel='stylesheet'][type='text/css'][href='default.css']", '']
|
980
|
+
# 2nd page
|
981
|
+
head = Nokogiri::XML::Document.parse(converted[1]).root.at_xpath('xmlns:head')
|
982
|
+
expect(head.element_children[0].a).to eq ['title', 'page 2']
|
983
|
+
expect(head.element_children[1].a).to eq ["link[rel='stylesheet'][type='text/css'][href='alternative.css']", '']
|
984
|
+
# 3rd page
|
985
|
+
head = Nokogiri::XML::Document.parse(converted[2]).root.at_xpath('xmlns:head')
|
986
|
+
expect(head.element_children[0].a).to eq ['title', 'the title']
|
987
|
+
expect(head.element_children[1].a).to eq ["link[rel='stylesheet'][type='text/css'][href='default.css']", '']
|
988
|
+
end
|
989
|
+
|
990
|
+
|
926
991
|
it 'ignore comments' do
|
927
992
|
text = "// この行はコメントです\nここから、パラグラフがはじまります。\n // これもコメント\n「二行目です。」\n三行目です。\n\n// これもコメント\n\n ここから、次のパラグラフです。\n// 最後のコメントです"
|
928
993
|
noramark = NoraMark::Document.parse(text, lang: 'ja', title: 'the title')
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nora_mark
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2beta15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- KOJIMA Satoshi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-03-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: kpeg
|