markdown_site 0.0.2 → 0.0.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
  SHA256:
3
- metadata.gz: fe0956d2f10ba9491c573f1c4059b713dc718ed2ed3c9795ef09ba3aa17b2673
4
- data.tar.gz: 5030d58915fc8fd522847bb7fc1ecbb6e11bb7c6c349f1665853e4246c916e16
3
+ metadata.gz: 146ecf99d44c8a53c22f178d63ace9d41272be90e1d056c0cf886117eb827c5c
4
+ data.tar.gz: e35fd8d39e44b6823393a5b568643a4d97ad97baea984c261a426e7bddb8542c
5
5
  SHA512:
6
- metadata.gz: 542486a4e71920fb43c58966d957db601f90d90b75083da7ad651a47b9032592912285d2cfa8561067085558029981cccb68b5b73d9baca9daa3344f164ac223
7
- data.tar.gz: 56052865acca00e2d7d06446a7ee5e3134fab0508185c68e7c3f5d0b7dd9ae4bb31d3bede4d513032fb85a0b3bb39cffd06ea5acd133713ef88e1490df709579
6
+ metadata.gz: 36a9a6a6542f2d19d1293904c1eabab92056e1c1f920e710cce2e60797cb8b24ac70950ca6b9d21727629d5c93ac93884e0f9b8a51941fc81f4c1570195ad7a2
7
+ data.tar.gz: 82078f7cc43ea5b48f236ead24d41297cb58e4f1344dae36c14f31ed7a9462ab2d81050e3949edd97921402119e30f2d1823aa83fcd05cb5bde09ffe22419a13
@@ -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,50 @@ module MarkdownSite
17
20
  end
18
21
  end
19
22
 
23
+ def get_summary_html(lang=nil, dir=nil)
24
+ if @summary_page[lang] == nil
25
+ temp_file = false
26
+ path = @site.pages_path+"/"+lang+"summary.md"
27
+ unless File.exist?(path)
28
+ temp_file = true
29
+ f = File.new(path, 'w')
30
+ parent_path = []
31
+ @site_pages.each do |page|
32
+ if page.path.include?("/")
33
+ output_str = ""
34
+ paths = page.path.split("/")
35
+ 0.upto(paths.length-2) do |i|
36
+ if parent_path[i]
37
+ if parent_path[i] == paths[i]
38
+ output_str = output_str + " "
39
+ else
40
+ output_str = output_str + "* " + paths[i] + "\n" + " "*(i+1)
41
+ parent_path[i] = paths[i]
42
+ parent_path = parent_path[0..i]
43
+ end
44
+ else
45
+ output_str = output_str + "* " + paths[i] + "\n" + " "*(i+1)
46
+ parent_path << paths[i]
47
+ end
48
+ end
49
+ output_str = output_str + "* [" + paths[-1] + "](#{page.path}.html)\n"
50
+ f.puts(output_str)
51
+ else
52
+ f.puts("* [#{page.path}](#{page.path}.html)\n")
53
+ end
54
+ end
55
+ f.close
56
+ end
57
+ @summary_page[lang] = MarkdownExtension::Summary.new(@site_config, lang)
58
+ File.delete(path) if temp_file
59
+ return @summary_page[lang].html(dir)
60
+ else
61
+ return @summary_page[lang].html(dir)
62
+ end
63
+ end
64
+
20
65
  def generate(site_pages, lang=nil)
66
+ @site_pages = site_pages
21
67
  template = Liquid::Template.parse(File.read(@site_config.pages_template))
22
68
  page_count = (site_pages.size / 20) + 1
23
69
  1.upto(page_count) do |page_number|
@@ -37,11 +83,19 @@ module MarkdownSite
37
83
  f.close
38
84
  end
39
85
  template = Liquid::Template.parse(File.read(@site_config.page_template))
86
+ default_lang = @site_config.languages.first[1]
40
87
  site_pages.each do |page|
41
- filename = "#{@site_config.publish_dir}/#{lang}#{page.item_name}.html"
88
+ if page.path.include?("/")
89
+ dir = "#{@site_config.publish_dir}/#{lang}#{page.path.split("/")[0..-2].join("/")}"
90
+ FileUtils.mkdir_p(dir)
91
+ end
92
+ filename = "#{@site_config.publish_dir}/#{lang}#{page.path}.html"
42
93
  f = File.new(filename, "w")
43
94
  f.puts template.render(
44
95
  'config'=>{'title'=>@site_config.title},
96
+ 'default_lang'=>default_lang,
97
+ 'languages' => @site.languages,
98
+ 'summary_html' => get_summary_html(lang, page.path.split("/")[0..-2].join("/")),
45
99
  'page_title' => page.item_name,
46
100
  'page_html' => page.html)
47
101
  f.close
@@ -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.3'
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.3
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-17 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: