miniyard 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -8,6 +8,7 @@ options = {
8
8
  root: Dir.pwd,
9
9
  doc: nil,
10
10
  cov: nil,
11
+ ci: nil,
11
12
  name: nil
12
13
  }
13
14
 
@@ -19,9 +20,12 @@ OptionParser.new do |opts|
19
20
  opts.on("-d SOURCE_DOCS""--doc=SOURCE_DOCS", "Docs folder to copy (requires --name option)") do |v|
20
21
  options[:doc] = v
21
22
  end
22
- opts.on("-c SOURCE_COVERAGE", "--cov=SOURCE_COVERAGE", "Coverage folder to copy (requires --name option)") do |v|
23
+ opts.on("-o SOURCE_COVERAGE", "--cov=SOURCE_COVERAGE", "Coverage folder to copy (requires --name option)") do |v|
23
24
  options[:cov] = v
24
25
  end
26
+ opts.on("-u CI_URL", "--url=CI_URL", "Full URL to CI for project") do |v|
27
+ options[:ci] = v
28
+ end
25
29
  opts.on("-n NAME", "--name=NAME", "The name of the application folder in root. (Only applies to --cpdoc or --cpcov flags)") do |v|
26
30
  options[:name] = v
27
31
  end
@@ -31,4 +35,4 @@ if options[:doc] || options[:cov]
31
35
  MiniYard::Copy.new(options).run
32
36
  end
33
37
 
34
- MiniYard::Generate.new(options[:root]).run
38
+ MiniYard::Generate.new(options).run
@@ -1,17 +1,20 @@
1
1
  require "miniyard/version"
2
+ require "miniyard/folder"
2
3
  require 'fileutils'
3
4
  require 'haml'
4
5
 
5
6
  module MiniYard
6
7
  class Generate
7
8
 
8
- def initialize(root)
9
- raise 'Unable to generate MiniYard at path %s: not a directory' % path unless File.directory?(root)
10
- @root = File.expand_path(root)
9
+ def initialize(options)
10
+ raise 'Unable to generate MiniYard at path %s: not a directory' % path unless File.directory?(options[:root])
11
+ @options = options
12
+ @root = File.expand_path(@options[:root])
11
13
  end
12
14
 
13
15
  def run
14
16
  $stdout.puts('Generating miniyard at '+@root)
17
+ write_ci_url if @options[:ci]
15
18
  FileUtils.rm(index_file) if index_exists?
16
19
  output = haml_render(index_template)
17
20
  write_file(index_file, output)
@@ -19,7 +22,7 @@ module MiniYard
19
22
  end
20
23
 
21
24
  def folders
22
- @folders ||= Dir[File.join(@root, '*')].sort.select{|n| File.directory?(n) }.map{|n| File.basename(n) }
25
+ @folders ||= Dir[File.join(@root, '*')].sort.select{|n| File.directory?(n) }.map{|n| MiniYard::Folder.new(n) }
23
26
  end
24
27
 
25
28
  def index_template
@@ -53,6 +56,14 @@ module MiniYard
53
56
  end
54
57
  end
55
58
 
59
+ def write_ci_url
60
+ File.open(ci_path, 'w'){|f| f.write(@options[:ci]) }
61
+ end
62
+
63
+ def ci_path
64
+ File.join(@root, @options[:name], 'ci.url')
65
+ end
66
+
56
67
  def bootstrap_version
57
68
  "1.4.0"
58
69
  end
@@ -0,0 +1,23 @@
1
+ module MiniYard
2
+ class Folder
3
+ attr_reader :name, :doc, :cov, :ci
4
+
5
+ def initialize(path)
6
+ @path = path
7
+ @name = File.basename(path)
8
+ @doc = File.directory?(File.join(path, 'doc')) ? "yes" : "no"
9
+ @cov = File.directory?(File.join(path, 'cov')) ? "yes" : "no"
10
+ @ci = get_ci_url
11
+ end
12
+
13
+ def get_ci_url
14
+ ci_file = File.join(@path, 'ci.url')
15
+ if File.file?(ci_file)
16
+ File.open(ci_file, 'r'){|f| @ci_file = f.read.chop.strip }
17
+ else
18
+ "no"
19
+ end
20
+ end
21
+
22
+ end
23
+ end
@@ -1,3 +1,3 @@
1
1
  module MiniYard
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -4,18 +4,35 @@
4
4
  %title [ MiniYard ]
5
5
  %link{rel: 'stylesheet', type: 'text/css', href: './bootstrap.1.4.0.min.css'}
6
6
  :javascript
7
- function selectFolder(anchor, folder) {
8
- document.getElementById('doc-frame-link').href = './'+folder+'/doc/index.html';
9
- document.getElementById('cov-frame-link').href = './'+folder+'/cov/index.html';
7
+ function selectFolder(anchor) {
8
+ var docHref = updatePill(anchor.dataset.doc, 'doc-frame-link', './'+anchor.dataset.name+'/doc/index.html');
9
+ var covHref = updatePill(anchor.dataset.cov, 'cov-frame-link', './'+anchor.dataset.name+'/cov/index.html');
10
+ var ciHref = updatePill(anchor.dataset.ciurl, 'ci-frame-link', anchor.dataset.ciurl);
11
+ var frameSrc = (docHref != '#' ? docHref : (covHref != '#' ? covHref : ciHref));
12
+ if (frameSrc != 'javascript:void(0);')
13
+ document.getElementById('frame').src = frameSrc;
14
+
10
15
  setActive(anchor);
11
16
  setActive(document.getElementById('doc-frame-link'));
12
17
  }
18
+ function updatePill(dataAttr, pillAnchorId, pillAnchorHref) {
19
+ var link = document.getElementById(pillAnchorId);
20
+ if (dataAttr == 'no') {
21
+ link.parentElement.classList.add('hide');
22
+ link.href = 'javascript:void(0);';
23
+ } else {
24
+ link.parentElement.classList.remove('hide');
25
+ link.href = pillAnchorHref;
26
+ }
27
+ return link.href;
28
+ }
13
29
  function setActive(anchor) {
14
30
  var ul = anchor.parentElement.parentElement;
15
31
  for (var i = 0; i < ul.children.length; i++)
16
32
  ul.children[i].classList.remove('active');
17
33
  anchor.parentNode.classList.add('active');
18
34
  }
35
+
19
36
  :css
20
37
  html,body { height: 100%; margin: 0; padding: 0; }
21
38
  body { background: #333; color: #fff; }
@@ -30,6 +47,7 @@
30
47
  .sidebar ul li.active { font-weight: bold; background: #666; }
31
48
  .content ul.pills { margin-bottom: 0; }
32
49
  .content ul.pills a { color: #fff; text-shadow: 0 1px 1px #666; }
50
+ .content ul.pills li.hide { display: none }
33
51
  .content #frame { width: 100%; min-height: 90%; background: #fff; }
34
52
 
35
53
  %body
@@ -38,8 +56,8 @@
38
56
  %ul
39
57
  - folders.each do |folder|
40
58
  %li
41
- %a{id: "#{folder}-link", href: "./#{folder}/doc/index.html", target: 'frame', onclick: "javascript: selectFolder(this, '#{folder}')"}
42
- = folder
59
+ %a{id: "#{folder.name}-link", href: '#', 'data-name' => folder.name, 'data-doc' => folder.doc, 'data-cov' => folder.cov, 'data-ciurl' => folder.ci, onclick: "javascript: selectFolder(this);"}
60
+ = folder.name
43
61
 
44
62
  .content
45
63
  %ul#pill-nav.pills{"data-pills" => "pills"}
@@ -47,6 +65,8 @@
47
65
  %a{id: "doc-frame-link", href: 'javascript: void(0);', target: "frame", onclick: "javascript: setActive(this)"} Documentation
48
66
  %li
49
67
  %a{id: "cov-frame-link", href: 'javascript: void(0);', target: "frame", onclick: "javascript: setActive(this)"} Coverage
68
+ %li
69
+ %a{id: "ci-frame-link", href: 'javascript: void(0);', target: "frame", onclick: "javascript: setActive(this)"} CI
50
70
  %iframe#frame{name: 'frame', frameborder: '0'}
51
71
  %h3.title
52
72
  %span.bracket [
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: miniyard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-23 00:00:00.000000000Z
12
+ date: 2011-12-24 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: haml
16
- requirement: &2153365140 !ruby/object:Gem::Requirement
16
+ requirement: &2164268180 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2153365140
24
+ version_requirements: *2164268180
25
25
  description: A static html framebuilder to host multiple documentation folders
26
26
  email:
27
27
  - bj.neilsen@gmail.com
@@ -36,6 +36,7 @@ files:
36
36
  - bin/miniyard
37
37
  - lib/miniyard.rb
38
38
  - lib/miniyard/copy.rb
39
+ - lib/miniyard/folder.rb
39
40
  - lib/miniyard/version.rb
40
41
  - lib/templates/bootstrap.1.4.0.min.css
41
42
  - lib/templates/index.haml