termnote 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -21,6 +21,9 @@ items:
21
21
  - Pencil
22
22
  - Heart
23
23
  ---
24
+ type: console
25
+ binary: irb
26
+ ---
24
27
  type: code
25
28
  language: ruby
26
29
  source: |
data/lib/termnote.rb CHANGED
@@ -27,5 +27,9 @@ module TermNote
27
27
  def list(options)
28
28
  Pane::List.new options
29
29
  end
30
+
31
+ def console(options)
32
+ Pane::Console.new options
33
+ end
30
34
  end
31
35
 
@@ -13,12 +13,7 @@ module TermNote
13
13
  def to_panes
14
14
  @documents.map do |document|
15
15
  type = document['type']
16
- case type
17
- when "chapter" then Pane::Chapter.new document
18
- when "code" then Pane::Code.new document
19
- when "list" then Pane::List.new document
20
- when "text" then Pane::Text.new document
21
- end
16
+ send(type, document)
22
17
  end
23
18
  end
24
19
  end
data/lib/termnote/pane.rb CHANGED
@@ -2,14 +2,16 @@ require_relative 'pane/chapter'
2
2
  require_relative 'pane/code'
3
3
  require_relative 'pane/list'
4
4
  require_relative 'pane/text'
5
+ require_relative 'pane/console'
6
+
5
7
  module TermNote
6
8
  module Pane
7
9
  attr_accessor :show, :height, :width, :rows
8
10
 
9
11
  def call(window_size)
10
12
  window_height, window_width = window_size
11
- @width = window_width - (window_width * 0.2)
12
- @height = window_height / 2
13
+ @width = window_width
14
+ @height = window_height
13
15
  clear
14
16
  render
15
17
  end
@@ -21,23 +23,19 @@ module TermNote
21
23
  end
22
24
 
23
25
  def render
24
- puts space + formated_rows + space + footer
25
- end
26
-
27
- def gutter
28
- " " * (width * 0.1)
26
+ puts show.header + space + formated_rows + space
29
27
  end
30
28
 
31
29
  def space
32
- "\n" * (height - rows.size)
33
- end
34
-
35
- def footer
36
- "[#{show.panes.index(self) + 1}/#{show.panes.size}]".bold
30
+ "\n" * (height / 2)
37
31
  end
38
32
 
39
33
  def formated_rows
40
34
  rows.map { |row| gutter + row }.join("\n")
41
35
  end
36
+
37
+ def gutter
38
+ " " * (width / 10)
39
+ end
42
40
  end
43
41
  end
@@ -0,0 +1,20 @@
1
+ module TermNote
2
+ module Pane
3
+ class Console
4
+ include Pane
5
+
6
+ attr_accessor :binary
7
+
8
+ def initialize(options)
9
+ @binary = options[:binary] || options['binary']
10
+ end
11
+
12
+ private
13
+
14
+ def render
15
+ system binary
16
+ show.forward
17
+ end
18
+ end
19
+ end
20
+ end
data/lib/termnote/show.rb CHANGED
@@ -7,6 +7,7 @@ module TermNote
7
7
  end
8
8
 
9
9
  def add(pane)
10
+ raise ArgumentError, "Pane required" if pane.nil?
10
11
  panes << pane
11
12
  pane.show = self
12
13
  end
@@ -19,6 +20,10 @@ module TermNote
19
20
  panes.index pane
20
21
  end
21
22
 
23
+ def total
24
+ panes.size
25
+ end
26
+
22
27
  def start
23
28
  active = true
24
29
  while active
@@ -39,6 +44,12 @@ module TermNote
39
44
  @pane = panes[position - 1] || panes.last
40
45
  end
41
46
 
47
+ def header
48
+ "[#{position}/#{total}] - #{panes.first.title}\n".bold
49
+ end
50
+
51
+ private
52
+
42
53
  def command
43
54
  $stdin.getch
44
55
  end
@@ -1,3 +1,3 @@
1
1
  module TermNote
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: termnote
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-13 00:00:00.000000000 Z
12
+ date: 2012-11-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: colored
@@ -101,6 +101,7 @@ files:
101
101
  - lib/termnote/pane.rb
102
102
  - lib/termnote/pane/chapter.rb
103
103
  - lib/termnote/pane/code.rb
104
+ - lib/termnote/pane/console.rb
104
105
  - lib/termnote/pane/list.rb
105
106
  - lib/termnote/pane/text.rb
106
107
  - lib/termnote/show.rb
@@ -120,7 +121,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
120
121
  version: '0'
121
122
  segments:
122
123
  - 0
123
- hash: 1621899467072845328
124
+ hash: 197848977520802502
124
125
  required_rubygems_version: !ruby/object:Gem::Requirement
125
126
  none: false
126
127
  requirements:
@@ -129,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
129
130
  version: '0'
130
131
  segments:
131
132
  - 0
132
- hash: 1621899467072845328
133
+ hash: 197848977520802502
133
134
  requirements: []
134
135
  rubyforge_project:
135
136
  rubygems_version: 1.8.24