markdown_site 0.0.2 → 0.0.4

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
  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: