markdown_site 0.0.2 → 0.0.4

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
  SHA256:
3
- metadata.gz: fe0956d2f10ba9491c573f1c4059b713dc718ed2ed3c9795ef09ba3aa17b2673
4
- data.tar.gz: 5030d58915fc8fd522847bb7fc1ecbb6e11bb7c6c349f1665853e4246c916e16
3
+ metadata.gz: 7ba29579ef989a99bf49ecf62193a78c25f8b9166515dcd06485a75914425dbd
4
+ data.tar.gz: 169651e60b49ee57a76a49c4858c3fdca1d0ab01173b13473623ecbe45405719
5
5
  SHA512:
6
- metadata.gz: 542486a4e71920fb43c58966d957db601f90d90b75083da7ad651a47b9032592912285d2cfa8561067085558029981cccb68b5b73d9baca9daa3344f164ac223
7
- data.tar.gz: 56052865acca00e2d7d06446a7ee5e3134fab0508185c68e7c3f5d0b7dd9ae4bb31d3bede4d513032fb85a0b3bb39cffd06ea5acd133713ef88e1490df709579
6
+ metadata.gz: 4c72e405b5fbd868f69928fe3b2662b32356372d10d34ad0003efb2579073f780fe1556453ede8931583aa9b713f9b7527a909dbc8a14a0c2e44f9cd3428dfda
7
+ data.tar.gz: c98333c1ed973f42953beb00dd3e9db005fd4547ac7b2da5644b0e5978651c518aa41ef7c75145102092bbf130ce3341fc3ea1dae0e9c63f79cc32cc2e25176a
@@ -114,6 +114,14 @@ module MarkdownSite
114
114
 
115
115
  def journals_template
116
116
  return get_template_info("journals_template")
117
- end
117
+ end
118
+
119
+ def root_template
120
+ return get_template_info("root_template")
121
+ end
122
+
123
+ def index_template
124
+ return get_template_info("index_template")
125
+ end
118
126
  end
119
127
  end
@@ -4,7 +4,7 @@ require "markdown_extension"
4
4
 
5
5
  module MarkdownSite
6
6
  class Site
7
- attr_accessor :config, :pages, :journals, :references, :reverse_references
7
+ attr_accessor :config, :pages_path, :pages, :journals, :references, :reverse_references
8
8
  attr_accessor :nodes, :links, :citations, :languages
9
9
 
10
10
  def initialize(config, type)
@@ -60,10 +60,13 @@ module MarkdownSite
60
60
  def init_pages_by_lang(lang=nil)
61
61
  pages = []
62
62
  files = Dir.glob(@pages_path + lang.to_s + "/**/*.md")
63
+ files.sort! do |a,b|
64
+ folder_file_comparison(a,b)
65
+ end
63
66
  files.each do |file|
64
67
  unless file == @pages_path + lang.to_s + "/summary.md"
65
68
  unless file.index("hls_")
66
- page = MarkdownExtension::Page.new(file, self)
69
+ page = MarkdownExtension::Page.new(file, self, lang)
67
70
  pages << page
68
71
  gen_references(page.item_name , page.markdown)
69
72
  end
@@ -72,6 +75,24 @@ module MarkdownSite
72
75
  return pages
73
76
  end
74
77
 
78
+ def folder_file_comparison(a,b)
79
+ a_array = a.split("/")
80
+ b_array = b.split("/")
81
+ if a_array.length == 1
82
+ if b_array.length == 1
83
+ return a<=>b
84
+ else
85
+ return 1
86
+ end
87
+ else
88
+ if a_array[0]==b_array[0]
89
+ return folder_file_comparison(a_array[1..-1].join("/"),b_array[1..-1].join("/"))
90
+ else
91
+ return a_array[0]<=>b_array[0]
92
+ end
93
+ end
94
+ end
95
+
75
96
  def pages(lang=nil)
76
97
  if @pages
77
98
  return @pages
@@ -211,6 +232,11 @@ module MarkdownSite
211
232
  end
212
233
 
213
234
  def generate_index
235
+ if @languages
236
+ template = MarkdownSite::RootTemplate.new(self)
237
+ template.generate()
238
+ else
239
+ end
214
240
  end
215
241
 
216
242
  def generate_pages
@@ -1,7 +1,10 @@
1
+ require "fileutils"
2
+
1
3
  module MarkdownSite
2
4
  class PageTemplate < Template
3
5
  def initialize(site)
4
6
  super(site)
7
+ @summary_page = {}
5
8
  end
6
9
 
7
10
  def add_page(page)
@@ -17,7 +20,51 @@ module MarkdownSite
17
20
  end
18
21
  end
19
22
 
23
+ def get_summary_html(lang=nil, dir=nil)
24
+ return nil if @site_config.type == :logseq
25
+ if @summary_page[lang] == nil
26
+ temp_file = false
27
+ path = @site.pages_path+"/"+lang.to_s+"summary.md"
28
+ unless File.exist?(path)
29
+ temp_file = true
30
+ f = File.new(path, 'w')
31
+ parent_path = []
32
+ @site_pages.each do |page|
33
+ if page.path.include?("/")
34
+ output_str = ""
35
+ paths = page.path.split("/")
36
+ 0.upto(paths.length-2) do |i|
37
+ if parent_path[i]
38
+ if parent_path[i] == paths[i]
39
+ output_str = output_str + " "
40
+ else
41
+ output_str = output_str + "* " + paths[i] + "\n" + " "*(i+1)
42
+ parent_path[i] = paths[i]
43
+ parent_path = parent_path[0..i]
44
+ end
45
+ else
46
+ output_str = output_str + "* " + paths[i] + "\n" + " "*(i+1)
47
+ parent_path << paths[i]
48
+ end
49
+ end
50
+ output_str = output_str + "* [" + paths[-1] + "](#{page.path}.html)\n"
51
+ f.puts(output_str)
52
+ else
53
+ f.puts("* [#{page.path}](#{page.path}.html)\n")
54
+ end
55
+ end
56
+ f.close
57
+ end
58
+ @summary_page[lang] = MarkdownExtension::Summary.new(@site_config, lang)
59
+ File.delete(path) if temp_file
60
+ return @summary_page[lang].html(dir)
61
+ else
62
+ return @summary_page[lang].html(dir)
63
+ end
64
+ end
65
+
20
66
  def generate(site_pages, lang=nil)
67
+ @site_pages = site_pages
21
68
  template = Liquid::Template.parse(File.read(@site_config.pages_template))
22
69
  page_count = (site_pages.size / 20) + 1
23
70
  1.upto(page_count) do |page_number|
@@ -37,13 +84,38 @@ module MarkdownSite
37
84
  f.close
38
85
  end
39
86
  template = Liquid::Template.parse(File.read(@site_config.page_template))
87
+ unless lang
88
+ if @site_config.languages
89
+ default_lang = @site_config.languages.first[1]
90
+ else
91
+ default_lang = nil
92
+ end
93
+ else
94
+ default_lang = @site_config.languages[lang[0..-2]]
95
+ end
40
96
  site_pages.each do |page|
41
- filename = "#{@site_config.publish_dir}/#{lang}#{page.item_name}.html"
97
+ if page.path.include?("/")
98
+ dir = "#{@site_config.publish_dir}/#{lang}#{page.path.split("/")[0..-2].join("/")}"
99
+ FileUtils.mkdir_p(dir)
100
+ end
101
+ filename = "#{@site_config.publish_dir}/#{lang}#{page.path}.html"
102
+ if @site.languages
103
+ languages = []
104
+ @site.languages.each do |k, v|
105
+ languages << {"path"=> "../" * (filename.split("/").size-3) + k, "title"=>v}
106
+ end
107
+ end
108
+ kg_url = "../" * (filename.split("/").size-3) + "kg.html"
42
109
  f = File.new(filename, "w")
43
110
  f.puts template.render(
44
111
  'config'=>{'title'=>@site_config.title},
112
+ 'kg_url' => kg_url,
113
+ 'default_lang'=>default_lang,
114
+ 'languages' => languages,
115
+ 'summary_html' => get_summary_html(lang, page.path.split("/")[0..-2].join("/")),
45
116
  'page_title' => page.item_name,
46
- 'page_html' => page.html)
117
+ 'page_html' => page.html,
118
+ 'meta_html' => page.meta_html)
47
119
  f.close
48
120
  end
49
121
  end
@@ -0,0 +1,16 @@
1
+ module MarkdownSite
2
+ class RootTemplate < Template
3
+ def initialize(site)
4
+ super(site)
5
+ end
6
+ def generate()
7
+ template = Liquid::Template.parse(File.read(@site_config.root_template))
8
+ default_path = @site_config.languages.first[0]
9
+ f = File.new(@site_config.publish_dir + "/index.html", "w")
10
+ f.puts template.render(
11
+ 'url'=>"#{default_path}/index.html"
12
+ )
13
+ f.close
14
+ end
15
+ end
16
+ end
@@ -1,3 +1,3 @@
1
1
  module MarkdownSite
2
- Version = '0.0.2'
3
- end
2
+ Version = '0.0.4'
3
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: markdown_site
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zhuang Biaowei
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-05 00:00:00.000000000 Z
11
+ date: 2023-02-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tomlrb
@@ -66,6 +66,7 @@ files:
66
66
  - lib/markdown_site/templates/Knowledge_graph_template.rb
67
67
  - lib/markdown_site/templates/journal_template.rb
68
68
  - lib/markdown_site/templates/page_template.rb
69
+ - lib/markdown_site/templates/root_template.rb
69
70
  - lib/markdown_site/version.rb
70
71
  homepage: https://github.com/markdown-world/markdown_site
71
72
  licenses: