markdown_site 0.0.2 → 0.0.3

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