sancho 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
data/lib/tasks.rake ADDED
@@ -0,0 +1,80 @@
1
+ require 'erb'
2
+ require 'tmpdir'
3
+ require_relative 'sancho'
4
+ include Sancho
5
+
6
+ LAYOUT = '_layouts'.freeze
7
+
8
+ namespace :sancho do
9
+ desc "init"
10
+ task :init do
11
+ if Dir.exist?(LAYOUT)
12
+ puts "Sancho initialized already"
13
+ exit(0)
14
+ end
15
+ cp_r "#{Sancho.assets}/.", LAYOUT, verbose: false
16
+ basics = Dir.glob(File.join(LAYOUT, '*.*'))
17
+ .map{|e| "#{?\s * 4}created #{e}"}.join(?\n)
18
+ Conf.read
19
+ puts <<~EOF
20
+ Punching basics..
21
+ #{basics}
22
+
23
+ Punching config..
24
+ created #{Conf::CONF}
25
+
26
+ Sancho initialized!
27
+
28
+ To create Site Pages:
29
+ $ rake sancho:init
30
+ $ rake sancho:docs
31
+ $ rake sancho:serve
32
+ EOF
33
+ end
34
+
35
+ desc "docs"
36
+ task :docs do
37
+ site = Sancho::DOCS
38
+ docs = Sancho.docs
39
+ mkdir_p %w[images css js].map{ File.join(site, _1)}
40
+ styles = File.join(LAYOUT, 'styles.css')
41
+ cp styles, File.join(site, 'css')
42
+
43
+ # process .erb
44
+ samples = Dir.glob("#{LAYOUT}/*.erb")
45
+ @site = docs
46
+ samples.each {|erb|
47
+ body = ERB.new(File.read(erb), trim_mode: '%<>').result(binding)
48
+ name = File.join(site, File.basename(erb, '.erb'))
49
+ File.write(name, body)
50
+ }
51
+
52
+ index = docs.pages.find{|page| page.source.downcase =~ /^index/ }
53
+ docs << Page.new(docs.pages.first.source, 'index.html') unless index
54
+
55
+ tmpdir = Dir.mktmpdir
56
+ begin
57
+ header = File.join(tmpdir, 'header.html')
58
+ footer = File.join(tmpdir, 'footer.html')
59
+ sh "pandoc -o #{header} #{LAYOUT}/header.md"
60
+ sh "pandoc -o #{footer} #{LAYOUT}/footer.md"
61
+
62
+ docs.each_page{|page|
63
+ options = []
64
+ options << "-s --toc"
65
+ options << "--template #{LAYOUT}/layout.html -c css/styles.css"
66
+ options << "-B #{header} -A #{footer} "
67
+ sh "pandoc #{options.join(?\s)} -o #{site}/#{page.url} #{page.source}"
68
+ }
69
+ ensure
70
+ remove_entry tmpdir
71
+ end
72
+ end
73
+
74
+ desc "serve"
75
+ task serve: [:docs] do
76
+ ru = File.join(Sancho.lib, 'config.ru')
77
+ sh "rackup #{ru}"
78
+ end
79
+
80
+ end
data/sancho.gemspec ADDED
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "lib/sancho"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "sancho"
7
+ spec.version = Sancho::VERSION
8
+ spec.authors = ["Nikolay Voynov"]
9
+ spec.email = ["nvoynov@gmail.com"]
10
+
11
+ spec.summary = "Github Pages Generator"
12
+ # spec.description = "Simple Site Generator from Markdown to Html by Pandoc"
13
+ # spec.homepage = "https://github/nvoynov/sancho"
14
+ spec.required_ruby_version = ">= 2.6.0"
15
+
16
+ # spec.metadata["allowed_push_host"] = "TODO: Set to your gem server 'https://example.com'"
17
+
18
+ # spec.metadata["homepage_uri"] = spec.homepage
19
+ # spec.metadata["source_code_uri"] = "TODO: Put your gem's public repo URL here."
20
+ # spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
21
+
22
+ # Specify which files should be added to the gem when it is released.
23
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
24
+ spec.files = Dir.chdir(__dir__) do
25
+ `git ls-files -z`.split("\x0").reject do |f|
26
+ (f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|circleci)|appveyor)})
27
+ end
28
+ end
29
+ spec.bindir = "exe"
30
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
31
+ spec.require_paths = ["lib"]
32
+
33
+ # Uncomment to register a new dependency of your gem
34
+ # spec.add_dependency "example-gem", "~> 1.0"
35
+
36
+ # For more information and examples about making a new gem, check out our
37
+ # guide at: https://bundler.io/guides/creating_gem.html
38
+ end
data/sancho.yml ADDED
@@ -0,0 +1,6 @@
1
+ domain: noynov.github.io/sancho
2
+ title: Sancho Pages Puncher
3
+ pages:
4
+ - README.md
5
+ - CHANGELOG.md
6
+ - STORY.md
metadata ADDED
@@ -0,0 +1,70 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sancho
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.6.2
5
+ platform: ruby
6
+ authors:
7
+ - Nikolay Voynov
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2024-03-09 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
14
+ email:
15
+ - nvoynov@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - CHANGELOG.md
21
+ - Gemfile
22
+ - Gemfile.lock
23
+ - README.md
24
+ - Rakefile
25
+ - STORY.md
26
+ - _layouts/footer.md
27
+ - _layouts/header.md
28
+ - _layouts/layout.html
29
+ - _layouts/robots.txt.erb
30
+ - _layouts/sitemap.xml.erb
31
+ - _layouts/styles.css
32
+ - docs/changelog.html
33
+ - docs/css/styles.css
34
+ - docs/index.html
35
+ - docs/readme.html
36
+ - docs/robots.txt
37
+ - docs/sitemap.xml
38
+ - docs/story.html
39
+ - docs/styles.css
40
+ - lib/config.ru
41
+ - lib/sancho.rb
42
+ - lib/sancho/conf.rb
43
+ - lib/sancho/page.rb
44
+ - lib/sancho/site.rb
45
+ - lib/tasks.rake
46
+ - sancho.gemspec
47
+ - sancho.yml
48
+ homepage:
49
+ licenses: []
50
+ metadata: {}
51
+ post_install_message:
52
+ rdoc_options: []
53
+ require_paths:
54
+ - lib
55
+ required_ruby_version: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 2.6.0
60
+ required_rubygems_version: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ requirements: []
66
+ rubygems_version: 3.5.5
67
+ signing_key:
68
+ specification_version: 4
69
+ summary: Github Pages Generator
70
+ test_files: []