nitlanguage
/
nit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge: Added contributing guidelines and link from readme
[nit.git]
/
contrib
/
nitiwiki
/
src
/
wiki_base.nit
diff --git
a/contrib/nitiwiki/src/wiki_base.nit
b/contrib/nitiwiki/src/wiki_base.nit
index
9cd3eb0
..
d3adc26
100644
(file)
--- a/
contrib/nitiwiki/src/wiki_base.nit
+++ b/
contrib/nitiwiki/src/wiki_base.nit
@@
-50,12
+50,17
@@
class Nitiwiki
# Synchronize local output with the distant `WikiConfig::rsync_dir`.
fun sync do
var root = expand_path(config.root_dir, config.out_dir)
# Synchronize local output with the distant `WikiConfig::rsync_dir`.
fun sync do
var root = expand_path(config.root_dir, config.out_dir)
- sys.system "rsync -vr --delete {root}/ {config.rsync_dir}"
+ var rsync_dir = config.rsync_dir
+ if rsync_dir == "" then
+ message("Error: configure `wiki.rsync_dir` to use rsync.", 0)
+ return
+ end
+ sys.system "rsync -vr --delete -- {root.escape_to_sh}/ {rsync_dir.escape_to_sh}"
end
# Pull data from git repository.
fun fetch do
end
# Pull data from git repository.
fun fetch do
- sys.system "git pull {config.git_origin} {config.git_branch}"
+ sys.system "git pull {config.git_origin.escape_to_sh} {config.git_branch.escape_to_sh}"
end
# Analyze wiki files from `dir` to build wiki entries.
end
# Analyze wiki files from `dir` to build wiki entries.
@@
-79,7
+84,6
@@
class Nitiwiki
print "nitiWiki"
print "name: {config.wiki_name}"
print "config: {config.ini_file}"
print "nitiWiki"
print "name: {config.wiki_name}"
print "config: {config.ini_file}"
- print "url: {config.root_url}"
print ""
if root_section.is_dirty then
print "There is modified files:"
print ""
if root_section.is_dirty then
print "There is modified files:"
@@
-90,7
+94,7
@@
class Nitiwiki
var entry = entries[path]
if not entry.is_dirty then continue
var name = entry.name
var entry = entries[path]
if not entry.is_dirty then continue
var name = entry.name
- if entry.has_source then name = entry.src_path.to_s
+ if entry.has_source then name = entry.src_path.as(not null)
if entry.is_new then
print " + {name}"
else
if entry.is_new then
print " + {name}"
else
@@
-137,7
+141,7
@@
class Nitiwiki
fun need_render(src, target: String): Bool do
if force_render then return true
if not target.file_exists then return true
fun need_render(src, target: String): Bool do
if force_render then return true
if not target.file_exists then return true
- return src.file_stat.mtime >= target.file_stat.mtime
+ return src.file_stat.as(not null).mtime >= target.file_stat.as(not null).mtime
end
# Create a new `WikiSection`.
end
# Create a new `WikiSection`.
@@
-147,7
+151,7
@@
class Nitiwiki
path = path.simplify_path
if entries.has_key(path) then return entries[path].as(WikiSection)
var root = expand_path(config.root_dir, config.source_dir)
path = path.simplify_path
if entries.has_key(path) then return entries[path].as(WikiSection)
var root = expand_path(config.root_dir, config.source_dir)
- var name = path.basename("")
+ var name = path.basename
var section = new WikiSection(self, name)
entries[path] = section
if path == root then return section
var section = new WikiSection(self, name)
entries[path] = section
if path == root then return section
@@
-240,7
+244,7
@@
class Nitiwiki
# Used to translate ids in beautiful page names.
fun pretty_name(name: String): String do
name = name.replace("_", " ")
# Used to translate ids in beautiful page names.
fun pretty_name(name: String): String do
name = name.replace("_", " ")
- name = name.capitalized
+ name = name.capitalized(keep_upper=true)
return name
end
end
return name
end
end
@@
-279,7
+283,7
@@
abstract class WikiEntry
# Returns `-1` if not `has_source`.
fun create_time: Int do
if not has_source then return -1
# Returns `-1` if not `has_source`.
fun create_time: Int do
if not has_source then return -1
- return src_full_path.file_stat.ctime
+ return src_full_path.as(not null).file_stat.as(not null).ctime
end
# Entry last modification time.
end
# Entry last modification time.
@@
-287,7
+291,7
@@
abstract class WikiEntry
# Returns `-1` if not `has_source`.
fun last_edit_time: Int do
if not has_source then return -1
# Returns `-1` if not `has_source`.
fun last_edit_time: Int do
if not has_source then return -1
- return src_full_path.file_stat.mtime
+ return src_full_path.as(not null).file_stat.as(not null).mtime
end
# Entry list rendering time.
end
# Entry list rendering time.
@@
-295,7
+299,7
@@
abstract class WikiEntry
# Returns `-1` if `is_new`.
fun last_render_time: Int do
if is_new then return -1
# Returns `-1` if `is_new`.
fun last_render_time: Int do
if is_new then return -1
- return out_full_path.file_stat.mtime
+ return out_full_path.file_stat.as(not null).mtime
end
# Entries hierarchy
end
# Entries hierarchy
@@
-396,7
+400,7
@@
abstract class WikiEntry
# then returns the main wiki template file.
fun template_file: String do
if is_root then return wiki.config.template_file
# then returns the main wiki template file.
fun template_file: String do
if is_root then return wiki.config.template_file
- return parent.template_file
+ return parent.as(not null).template_file
end
# Header template file for `self`.
end
# Header template file for `self`.
@@
-404,7
+408,7
@@
abstract class WikiEntry
# Behave like `template_file`.
fun header_file: String do
if is_root then return wiki.config.header_file
# Behave like `template_file`.
fun header_file: String do
if is_root then return wiki.config.header_file
- return parent.header_file
+ return parent.as(not null).header_file
end
# Footer template file for `self`.
end
# Footer template file for `self`.
@@
-412,7
+416,7
@@
abstract class WikiEntry
# Behave like `template_file`.
fun footer_file: String do
if is_root then return wiki.config.footer_file
# Behave like `template_file`.
fun footer_file: String do
if is_root then return wiki.config.footer_file
- return parent.footer_file
+ return parent.as(not null).footer_file
end
# Menu template file for `self`.
end
# Menu template file for `self`.
@@
-420,7
+424,7
@@
abstract class WikiEntry
# Behave like `template_file`.
fun menu_file: String do
if is_root then return wiki.config.menu_file
# Behave like `template_file`.
fun menu_file: String do
if is_root then return wiki.config.menu_file
- return parent.menu_file
+ return parent.as(not null).menu_file
end
# Display the entry `name`.
end
# Display the entry `name`.
@@
-438,7
+442,7
@@
class WikiSection
redef fun title do
if has_config then
redef fun title do
if has_config then
- var title = config.title
+ var title = config.as(not null).title
if title != null then return title
end
return super
if title != null then return title
end
return super
@@
-448,7
+452,7
@@
class WikiSection
#
# Hidden section are rendered but not linked in menus.
fun is_hidden: Bool do
#
# Hidden section are rendered but not linked in menus.
fun is_hidden: Bool do
- if has_config then return config.is_hidden
+ if has_config then return config.as(not null).is_hidden
return false
end
return false
end
@@
-457,7
+461,7
@@
class WikiSection
if parent == null then
return wiki.config.source_dir
else
if parent == null then
return wiki.config.source_dir
else
- return wiki.expand_path(parent.src_path, name)
+ return wiki.expand_path(parent.as(not null).src_path, name)
end
end
end
end
@@
-473,7
+477,7
@@
class WikiSection
private fun try_load_config do
var cfile = wiki.expand_path(wiki.config.root_dir, src_path, wiki.config_filename)
if not cfile.file_exists then return
private fun try_load_config do
var cfile = wiki.expand_path(wiki.config.root_dir, src_path, wiki.config_filename)
if not cfile.file_exists then return
- wiki.message("Custom config for section {name}", 1)
+ wiki.message("Custom config for section {name}", 2)
config = new SectionConfig(cfile)
end
config = new SectionConfig(cfile)
end
@@
-482,41
+486,41
@@
class WikiSection
# Also check custom config.
redef fun template_file do
if has_config then
# Also check custom config.
redef fun template_file do
if has_config then
- var tpl = config.template_file
+ var tpl = config.as(not null).template_file
if tpl != null then return tpl
end
if is_root then return wiki.config.template_file
if tpl != null then return tpl
end
if is_root then return wiki.config.template_file
- return parent.template_file
+ return parent.as(not null).template_file
end
# Also check custom config.
redef fun header_file do
if has_config then
end
# Also check custom config.
redef fun header_file do
if has_config then
- var tpl = config.header_file
+ var tpl = config.as(not null).header_file
if tpl != null then return tpl
end
if is_root then return wiki.config.header_file
if tpl != null then return tpl
end
if is_root then return wiki.config.header_file
- return parent.header_file
+ return parent.as(not null).header_file
end
# Also check custom config.
redef fun footer_file do
if has_config then
end
# Also check custom config.
redef fun footer_file do
if has_config then
- var tpl = config.footer_file
+ var tpl = config.as(not null).footer_file
if tpl != null then return tpl
end
if is_root then return wiki.config.footer_file
if tpl != null then return tpl
end
if is_root then return wiki.config.footer_file
- return parent.footer_file
+ return parent.as(not null).footer_file
end
# Also check custom config.
redef fun menu_file do
if has_config then
end
# Also check custom config.
redef fun menu_file do
if has_config then
- var tpl = config.menu_file
+ var tpl = config.as(not null).menu_file
if tpl != null then return tpl
end
if is_root then return wiki.config.menu_file
if tpl != null then return tpl
end
if is_root then return wiki.config.menu_file
- return parent.menu_file
+ return parent.as(not null).menu_file
end
end
end
end
@@
-530,7
+534,8
@@
class WikiArticle
# Articles can only have `WikiSection` as parents.
redef type PARENT: WikiSection
# Articles can only have `WikiSection` as parents.
redef type PARENT: WikiSection
- redef fun title: String do
+ redef fun title do
+ var parent = self.parent
if name == "index" and parent != null then return parent.title
return super
end
if name == "index" and parent != null then return parent.title
return super
end
@@
-547,7
+552,7
@@
class WikiArticle
content = md
end
content = md
end
- redef var src_full_path: nullable String = null
+ redef var src_full_path = null
redef fun src_path do
var src_full_path = self.src_full_path
redef fun src_path do
var src_full_path = self.src_full_path
@@
-563,7
+568,7
@@
class WikiArticle
# REQUIRE: `has_source`.
var md: nullable String is lazy do
if not has_source then return null
# REQUIRE: `has_source`.
var md: nullable String is lazy do
if not has_source then return null
- var file = new FileReader.open(src_full_path.to_s)
+ var file = new FileReader.open(src_full_path.as(not null))
var md = file.read_all
file.close
return md
var md = file.read_all
file.close
return md
@@
-574,7
+579,7
@@
class WikiArticle
redef fun is_dirty do
if super then return true
if has_source then
redef fun is_dirty do
if super then return true
if has_source then
- return wiki.need_render(src_full_path.to_s, out_full_path)
+ return wiki.need_render(src_full_path.as(not null), out_full_path)
end
return false
end
end
return false
end
@@
-611,9
+616,8
@@
class WikiConfig
super ConfigTree
# Returns the config value at `key` or return `default` if no key was found.
super ConfigTree
# Returns the config value at `key` or return `default` if no key was found.
- private fun value_or_default(key: String, default: String): String do
- if not has_key(key) then return default
- return self[key]
+ protected fun value_or_default(key: String, default: String): String do
+ return self[key] or else default
end
# Site name displayed.
end
# Site name displayed.
@@
-640,12
+644,6
@@
class WikiConfig
# * default: ``
var wiki_logo: String is lazy do return value_or_default("wiki.logo", "")
# * default: ``
var wiki_logo: String is lazy do return value_or_default("wiki.logo", "")
- # Root url of the wiki.
- #
- # * key: `wiki.root_url`
- # * default: `http://localhost/`
- var root_url: String is lazy do return value_or_default("wiki.root_url", "http://localhost/")
-
# Markdown extension recognized by this wiki.
#
# We allow only one kind of extension per wiki.
# Markdown extension recognized by this wiki.
#
# We allow only one kind of extension per wiki.
@@
-782,7
+780,7
@@
class WikiConfig
var sidebar_blocks: Array[String] is lazy do
var res = new Array[String]
if not has_key("wiki.sidebar.blocks") then return res
var sidebar_blocks: Array[String] is lazy do
var res = new Array[String]
if not has_key("wiki.sidebar.blocks") then return res
- for val in at("wiki.sidebar.blocks").values do
+ for val in at("wiki.sidebar.blocks").as(not null).values do
res.add val
end
return res
res.add val
end
return res