mok2html 0.1.2 → 0.1.3

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
  SHA1:
3
- metadata.gz: 672a1059796350c2ca98c7f1cd4da526d1579941
4
- data.tar.gz: f6dfb30ba91f4de1ee9d32ab9395f9ef08ba60ec
3
+ metadata.gz: 1e23b6f6138a4925170d9cf76b33cd2d6c9f1c52
4
+ data.tar.gz: 8b1ab1477dd107cb4f19366d19cdc884ece41afb
5
5
  SHA512:
6
- metadata.gz: 5048659cf78ca90f8ef2f6745a1c09e9bccde777aedbf13e46558de490c621b28a11f5dc7fe9fb799a2da87206b8a38742e208f3f6e086003625dd31c283b97d
7
- data.tar.gz: e4edc8755fd7a2d443b7db87bd9dafe648e73f767bbc5bb2647e9d64ff9e7318b260c317f7f71f5d74dce0b4fda22856ee4439da7291b00dfc0180c705230c65
6
+ metadata.gz: a4ac12b4c76e67f868c5190fcb9c0b3c3da4ee1eecb64c8f40e47a9d91da4b5ccb829821c1df0b0694df959b5406faec35bc4cedd1b6480cdddbc969d14d90ea
7
+ data.tar.gz: 016a2b03a55cd670ab5510b4e174ec7042092081b3f7e12ee1b476c9307cca633ffac0044528e6d3501182be8fce0140b4adcbee1710f93358783599f2403ffe
data/Gemfile.lock CHANGED
@@ -1,14 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mok2html (0.1.1)
5
- mok-parser (>= 0.3.1)
4
+ mok2html (0.1.2)
5
+ mok-parser (>= 0.3.2)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
10
  mimemagic (0.2.1)
11
- mok-parser (0.3.1)
11
+ mok-parser (0.3.2)
12
12
  mimemagic
13
13
  rake (10.1.0)
14
14
 
data/History.rdoc CHANGED
@@ -1,3 +1,8 @@
1
+ == 0.1.3 (2013-12-21)
2
+ * new: variable_file と partial_base_directory の設定を追加
3
+ * change: 設定をシステム(/etc/mok)とユーザ(~/.mok)の2箇所で指定できるように
4
+ * change: コマンドラインオプションを整理
5
+
1
6
  == 0.1.2 (2013-12-14)
2
7
  ~/.mok2html.yaml が必須になっていたのを、オプションに変更
3
8
 
data/RELEASE CHANGED
@@ -1 +1 @@
1
- 2013-12-14
1
+ 2013-12-21
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.1.3
data/bin/mok2html CHANGED
@@ -7,8 +7,23 @@ require "yaml"
7
7
  require "optparse"
8
8
  require "mok2html"
9
9
 
10
- # デフォルトの設定値
11
- options = {:css => "", :js => "", :reference_extension => '.html', :reference_base_directory => "", :media_base_directory => "", :custom_element => "" , :language => 'ja', :config => '~/.mok2html.yaml', :index => true, :quiet => false}
10
+ # デフォルト設定値
11
+ options = {
12
+ :config => ["/etc/mok/mok.yaml", "/etc/mok/mok2html.yaml",
13
+ "~/.mok/mok.yaml", "~/.mok/mok2html.yaml"],
14
+ :css => "",
15
+ :javascript => "",
16
+ :reference_extension => ".html",
17
+ :reference_directory => "",
18
+ :partial_directory => "",
19
+ :media_directory => "",
20
+ :variable => ["/etc/mok/variable.yaml","~/.mok/variable.yaml"],
21
+ :language => "ja",
22
+ :index => true,
23
+ :quiet => false,
24
+ :custom_element => "" ,
25
+ }
26
+ options_default = options
12
27
 
13
28
  # 使い方
14
29
  def usage(opt)
@@ -16,47 +31,83 @@ def usage(opt)
16
31
  exit 0
17
32
  end
18
33
 
19
- def set_config_by_file(file, options)
20
- file_path = File.expand_path(file)
21
- return options unless File.exist?(file_path)
22
- config = YAML.load_file( file_path )
23
- if config
24
- options.each do |key,val|
25
- options[key.to_sym] = config[key.to_s] unless config[key.to_s].nil?
34
+ # 設定ファイルの読み込み
35
+ def set_config_by_file(files,options)
36
+ files.each do |file|
37
+ file_path = File.expand_path(file)
38
+ next unless File.file?(file_path)
39
+ config = YAML.load_file( file_path )
40
+ if config
41
+ options.each do |key,val|
42
+ options[key.to_sym] = config[key.to_s] unless config[key.to_s].nil?
43
+ end
26
44
  end
27
45
  end
28
46
  options
29
47
  end
30
48
 
49
+ # 設定内容の表示
50
+ def show_config(options)
51
+ options.each do |key, val|
52
+ next if key == :show_config or key == :src_file
53
+ puts "#{key.to_s.ljust(20)}: #{Array(val).join(',')}"
54
+ end
55
+ exit 0
56
+ end
57
+
58
+ # mok-parser のバージョンを表示
59
+ def mok_parser_version
60
+ "mok-parser #{Mok::VERSION} (#{Mok::RELEASE})"
61
+ end
62
+
63
+ # 設定ファイル
64
+ unless ARGV.find {|val| val == "--no-config"}
65
+ options = set_config_by_file(options[:config], options)
66
+ end
67
+
31
68
  # コマンドラインオプション
32
69
  opt = OptionParser.new do |opt|
33
- opt.banner = "Usage: mok2html [options] file"
34
70
  opt.version = Mok::Mok2Html::VERSION
35
71
  opt.release = Mok::Mok2Html::RELEASE
36
- opt.on("-c", "--css file[,file,..]", "HTMLに埋め込むスタイルシートを指定") {|f| options[:css] = f}
37
- opt.on("-j", "--javascript file[,file,..]", "HTMLに埋め込むJavaScriptを指定") {|f| options[:js] = f}
38
- opt.on("-L", "--language LANG", "言語(デフォルトは #{options[:language]} 。ドキュメント側で指定されていればそちらを優先)"){|l| options[:language] = l}
39
- opt.on("--[no-]config [file]", "設定ファイルを指定、または設定ファイルを使用しない(デフォルト:~/.mok2html)"){|v| options[:config] = v }
40
- opt.on("--[no-]index", "目次を生成する(デフォルトは生成する)"){|v| options[:index] = v }
41
- opt.on("--[no-]metadata", "メタ情報を出力しない(デフォルトは出力する)"){|v| options[:metadata] = v }
42
- opt.on("-q","--quiet", "本文だけを出力する(ヘッダやフッタは出力しない)"){ options[:quiet] = true }
43
- opt.on("-s","--reference_extension string", "リファレンス記法で「.%」を置換する拡張子(デフォルト .html)"){|s| options[:reference_extension] = s }
44
- opt.on("-R", "--reference_base_directory directory", "リンク記法((<..>))のファイルを配置する基底ディレクトリ(デフォルト:なし)"){|d| options[:media_base_directory] = d }
45
- opt.on("-M", "--media_base_directory directory", "画像や動画などのメディア記法(($..$))のファイルを配置する基底ディレクトリ(デフォルト:なし)"){|d| options[:media_base_directory] = d }
72
+ opt.on("-c", "--css file[,file,..]", "HTMLに埋め込むスタイルシートを指定(デフォルト:なし)") {|f| options[:css] = f}
73
+ opt.on("-j", "--javascript file[,file,..]", "HTMLに埋め込むJavaScriptを指定(デフォルト:なし)") {|f| options[:javascript] = f}
74
+ opt.on("-l", "--language LANG", "言語(デフォルト:#{options[:language]} 。ドキュメント側で指定した場合はそちらを優先)"){|l| options[:language] = l}
75
+ opt.on("--no-config", "設定ファイル(#{options[:config]})を使用しない"){|v| options[:config] = v }
76
+ opt.on("--variable file", "ドキュメント内変数((@..@))の外部定義ファイル(デフォルト:なし)"){|v| options[:variable] = v }
77
+ opt.on("--[no-]index", "目次を生成する/しない(デフォルト:する)"){|v| options[:index] = v }
78
+ opt.on("--[no-]metadata", "メタ情報を出力する/しない(デフォルト:する)"){|v| options[:metadata] = v }
79
+ opt.on("-q","--quiet", "ヘッダやフッタを除いた本文のみを出力する(デフォルト:しない)"){ options[:quiet] = true }
80
+ opt.on("-e","--reference_extension string", "リファレンス修飾((<..>)で最後の「.%」を置換する拡張子(デフォルト:.html)"){|s| options[:reference_extension] = s }
81
+ opt.on("-R", "--reference_directory directory", "リンク修飾((<..>))のファイルを配置するディレクトリ(デフォルト:なし)"){|d| options[:media_directory] = d }
82
+ opt.on("-M", "--media_directory directory", "メディア修飾(($..$))で画像や動画などのファイルを配置するディレクトリ(デフォルト:なし)"){|d| options[:media_directory] = d }
83
+ opt.on("-P", "--partial_directory directory", "部分テンプレート(partial)記法((!..!))のファイルを配置するディレクトリ(デフォルト:変換元ファイルのカレントディレクトリ)"){|d| options[:partial_directory] = d }
46
84
  opt.on("--custom_element file", "HTMLタグをカスタマイズするためのRubyファイル)"){|f| options[:custom_element] = f }
47
- opt.on("-V","--parser-version", "使用する mok-parser のバージョンを表示"){
48
- puts "mok-parser: #{Mok::VERSION} (#{Mok::RELEASE})"
49
- exit 0
50
- }
51
- end
52
- opt.parse!(ARGV)
85
+ opt.on("-s","--show-config", "現在の設定値を表示"){|flg| options[:show_config] = true }
86
+ opt.on("-S","--show-config-default", "mok2htmlのデフォルト設定値を表示"){ show_config options_default }
87
+ opt.on("-v","--version", "mok2htmlのバージョンを表示"){ puts opt.ver ; exit 0 }
88
+ opt.on("-V","--parser-version", "使用する mok-parser のバージョンを表示"){ puts mok_perser_version ; exit 0 }
89
+ opt.banner = <<EOL
90
+ #{opt.ver}
53
91
 
54
- usage(opt) unless ARGV[0]
92
+ == Usage
93
+ $ mok2html [options] file
94
+
95
+ == Description
96
+ "mok2html" is mok document to HTML converter.
97
+ Read more: https://github.com/garin/mok2html
55
98
 
56
- # config file
57
- options = set_config_by_file(options[:config], options) if options[:config]
99
+ == Parser
100
+ #{mok_parser_version}
101
+
102
+ == Options
103
+ EOL
104
+ end
105
+ opt.parse!(ARGV)
58
106
 
59
107
  # main
108
+ options[:src_file] = ARGV[0]
109
+ show_config(options) if options[:show_config] # 設定内容の表示
110
+ usage(opt) unless ARGV[0]
60
111
  src = File.open(ARGV[0],"r").readlines
61
112
  mok = Mok::Mok2Html.new(src, options)
62
113
  puts mok.to_html
@@ -0,0 +1,50 @@
1
+ # = mok2html.yaml.sample
2
+ # mok2html 設定ファイルのサンプル
3
+ #
4
+ # == 使い方
5
+ # ~/.mok/mok2html.yaml にファイルを置き、必要な設定を記述します。
6
+ # $ mkdir ~/.mok
7
+ # $ cp mok2html.yaml.sample ~/.mok/mok2html.yaml
8
+ # $ vi ~/.mok2html.yaml
9
+ #
10
+ #
11
+ # == 設定項目
12
+ # コンバート時にHTMLファイルに埋め込むスタイルシート(デフォルト:なし)
13
+ #css:
14
+ # - "~/doc/mok/css/bootstrap.css"
15
+ # - "~/doc/mok/css/prettify.css"
16
+ # - "~/doc/mok/css/_document.css"
17
+ #
18
+ # コンバート時にHTMLファイルに埋め込むjavascript(デフォルト:なし)
19
+ #javascript:
20
+ # - "~/doc/mok/js/jquery.js"
21
+ # - "~/doc/mok/js/bootstrap.js"
22
+ # - "~/doc/mok/js/prettify.js"
23
+ # - "~/doc/mok/js/prettify_onload.js"
24
+ #
25
+ # リファレンス修飾((<..>)で最後の「.%」を置換する拡張子( デフォルト:.html)
26
+ #reference_extension: ".html"
27
+ #
28
+ # リンク修飾((<..>))のファイルを配置するディレクトリ(デフォルト:なし)
29
+ #reference_directory: ""
30
+ #
31
+ # メディア修飾(($..$))で画像や動画などのファイルを配置す るディレクトリ(デフォルト:なし)
32
+ #media_directory: "/usr/local/media"
33
+ #
34
+ # 部分テンプレート(partial)記法((!..!))のファイルを配置するディレクトリ(デフォルト:変換元ファイルのカレントディレクトリ)
35
+ #partial_directory:
36
+ #
37
+ # HTMLタグをカスタマイズするためのRubyファイル(デフォルト:なし)
38
+ #custom_element: "/home/myname/mok2html/mycustom.rb"
39
+ #
40
+ # ドキュメントのフォーマット(デフォルト:ja)
41
+ #language: "ja"
42
+ #
43
+ # 目次(index)を作成するかどうか(デフォルト: true)
44
+ #index: true
45
+ #
46
+ # メタデータを作成するかどうか(デフォルト: true)
47
+ #metadata: true
48
+ #
49
+ # HTMLヘッダを出力((*しない*))かどうか(デフォルト: false)
50
+ #quiet: false
data/lib/mok2html.rb CHANGED
@@ -3,6 +3,7 @@
3
3
  # See the included file COPYING for details.
4
4
  require "mok2html_element"
5
5
  require "cgi"
6
+ require "yaml"
6
7
 
7
8
  module Mok
8
9
  class Mok2Html
@@ -13,14 +14,15 @@ module Mok
13
14
  @debug = true
14
15
 
15
16
  # options
16
- @css = files_to_str(options[:css])
17
- @js = files_to_str(options[:js])
18
- @language = options[:language]
19
- @index = options[:index]
20
- @metadata = options[:metadata]
21
- @quiet = options[:quiet]
22
-
17
+ @css = files_to_str(options[:css])
18
+ @javascript = files_to_str(options[:javascript])
19
+ @language = options[:language]
20
+ @index = options[:index]
21
+ @metadata = options[:metadata]
22
+ @quiet = options[:quiet]
23
+ options[:variables] = get_variables(files_to_str(options[:variable], true))
23
24
  get_customized_element(options[:custom_element]) unless options[:custom_element].empty?
25
+
24
26
  @mok = BlockParser.new(options)
25
27
  @metadata = setup_metadata
26
28
  @nodes = @mok.parse src
@@ -28,14 +30,23 @@ module Mok
28
30
 
29
31
  # 複数ファイルの文字列を返す
30
32
  # files: ファイルの配列または","区切り文字列
31
- def files_to_str(files = [])
33
+ # ignore: ファイルが存在しない時に無視する
34
+ def files_to_str(files = [], ignore = false)
32
35
  files = files.split(",") unless defined? files.each
33
36
  files.map do |f|
34
37
  path = File.expand_path(f.strip)
38
+ unless File.exist? path
39
+ next if ignore
40
+ end
35
41
  File.open(path).readlines.join + "\n" unless path.empty?
36
42
  end.join
37
43
  end
38
44
 
45
+ # variables を生成する
46
+ def get_variables(str = "")
47
+ YAML.load( str )
48
+ end
49
+
39
50
  # エレメントのカスタム用ファイルを読み込む
40
51
  def get_customized_element(file)
41
52
  require File.expand_path(file)
@@ -133,15 +144,19 @@ module Mok
133
144
  EOL
134
145
  str += css
135
146
  str += javascript
147
+ str += "<title>#{CGI.escapeHTML(@metadata[:subject])}</title>" unless @metadata[:subject].nil?
136
148
  str += <<EOL
137
- <title>#{CGI.escapeHTML(@metadata[:subject])}</title>
138
149
  </head>
139
150
  <body>
140
151
  EOL
141
152
  end
142
153
 
143
154
  def header_title
144
- "<h1>#{CGI.escapeHTML(@metadata[:subject])}</h1>\n"
155
+ unless @metadata[:subject].nil?
156
+ "<h1>#{CGI.escapeHTML(@metadata[:subject])}</h1>\n"
157
+ else
158
+ ""
159
+ end
145
160
  end
146
161
 
147
162
  def css
@@ -152,7 +167,7 @@ EOL
152
167
 
153
168
  def javascript
154
169
  str = ""
155
- str += %[<script type="text/javascript">#{@js}</script>\n] unless @js.empty?
170
+ str += %[<script type="text/javascript">#{@javascript}</script>\n] unless @javascript.empty?
156
171
  str
157
172
  end
158
173
 
data/mok2html.gemspec CHANGED
@@ -17,5 +17,5 @@ Gem::Specification.new do |spec|
17
17
 
18
18
  spec.add_development_dependency "bundler", "~> 1.3"
19
19
  spec.add_development_dependency "rake"
20
- spec.add_dependency('mok-parser', '>=0.3.1')
20
+ spec.add_dependency('mok-parser', '>=0.3.2')
21
21
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mok2html
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - garin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-14 00:00:00.000000000 Z
11
+ date: 2013-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - '>='
46
46
  - !ruby/object:Gem::Version
47
- version: 0.3.1
47
+ version: 0.3.2
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - '>='
53
53
  - !ruby/object:Gem::Version
54
- version: 0.3.1
54
+ version: 0.3.2
55
55
  description: mok is simple document format
56
56
  email:
57
57
  - garin54@gmail.com
@@ -71,10 +71,10 @@ files:
71
71
  - Rakefile
72
72
  - VERSION
73
73
  - bin/mok2html
74
+ - conf/mok2html.yaml.sample
74
75
  - lib/mok2html.rb
75
76
  - lib/mok2html_element.rb
76
77
  - mok2html.gemspec
77
- - mok2html.yaml.sample
78
78
  homepage: ''
79
79
  licenses:
80
80
  - GPLv3
data/mok2html.yaml.sample DELETED
@@ -1,45 +0,0 @@
1
- # = mok2html.yaml.sample
2
- # mok2html 設定ファイルのサンプルです
3
- #
4
- # == 使い方
5
- # 自身のホームディレクトリに .mok2html.yaml というファイル名で設置して値を編集します
6
- # $ cp mok2html.yaml.sample ~/.mok2html.yaml
7
- # $ vi ~/.mok2html.yaml
8
- #
9
- # == 設定項目
10
- # コンバート時にHTMLファイルに埋め込むスタイルシート(デフォルト:なし)
11
- # css:
12
- # - "~/doc/mok/css/bootstrap.css"
13
- # - "~/doc/mok/css/prettify.css"
14
- # - "~/doc/mok/css/_document.css"
15
-
16
- # コンバート時にHTMLファイルに埋め込むjavascript(デフォルト:なし)
17
- # js:
18
- # - "~/doc/mok/js/jquery.js"
19
- # - "~/doc/mok/js/bootstrap.js"
20
- # - "~/doc/mok/js/prettify.js"
21
- # - "~/doc/mok/js/prettify_onload.js"
22
-
23
- # リファレンス記法の「.%」を変換する拡張子(デフォルト:.html)
24
- #reference_extension: ".html"
25
-
26
- # リンク記法((<..>))のファイルを配置する基底ディレクトリ(デフォルト:なし)
27
- #reference_base_directory: ""
28
-
29
- # 画像やビデオ、音声などを配置するディレクトリ(デフォルト:なし)
30
- #media_base_directory: "/usr/local/media"
31
-
32
- # HTMLタグをカスタマイズするためのRubyファイル(デフォルト:なし)
33
- #custom_element: "/home/myname/mok2html/mycustom.rb"
34
-
35
- # ドキュメントのフォーマット(デフォルト:ja)
36
- #language: "ja"
37
-
38
- # 目次(index)を作成するかどうか(デフォルト: true)
39
- #index: true
40
-
41
- # メタデータを作成するかどうか(デフォルト: true)
42
- #metadata: true
43
-
44
- # HTMLヘッダを出力((*しない*))かどうか(デフォルト: false)
45
- #quiet: false