himekaminize 0.0.9 → 0.0.10

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
  SHA1:
3
- metadata.gz: 93e2dca4f2d3a7b7284724e70921b8d1a4752d67
4
- data.tar.gz: 396c209d02800367d081303217f4e04fffce7664
3
+ metadata.gz: 6cde3b0ebaa66408891147dffeb1bc467e575416
4
+ data.tar.gz: 7abc0cb4194a9ec8922a24b01200d25c091a3c51
5
5
  SHA512:
6
- metadata.gz: ea28d4e1a423e8d3becf51fb2ceda56366da3cad90fc3a1223eb638ae912289d3f90a71c1419416edea7a493d1f399e159c9223c2a918e2ce1d4ae90a064ed12
7
- data.tar.gz: ae2c2eff59636297dbec6369361fe01b20d1e7a6b8eca3de6ece67bebaff5df63d72f3124fc3c6f332f164da4cc38631ec5abdbe78b435ae042d5b708347c5ce
6
+ metadata.gz: 966d5bf23b2984ccd95bae0a907ae0320c6439c54ae01533577cb16ee974dbb7d72c38e23e63af70488ff63dec88afe4e804328cb31793f7416fd7992a3fb769
7
+ data.tar.gz: a7de0121fa2027368ce413ce35fe1f84176d5c0671f3496a5c948905d5cee287ab9d9a1a88feab5f1b49a70ca13d0bae748877e6c4e0ee49169addb3d16596b4
@@ -0,0 +1,43 @@
1
+ require "himekaminize/filters/base_filter"
2
+ module Himekaminize
3
+ module Filters
4
+ class HeaderFilter < BaseFilter
5
+ DEFAULT_HEADER_SIZE = 6
6
+ def call(context:, output:)
7
+ @context = context
8
+ output = output.map do |line|
9
+ if line.is_a?(String) && line =~ /\A\s*(#{Himekaminize::Nodes::Header::PATTERN})/
10
+ Himekaminize::Nodes::Header.new(line)
11
+ else
12
+ line
13
+ end
14
+ end
15
+
16
+ if only_header?
17
+ output = output.select { |line| line.is_a?(Himekaminize::Nodes::Header) }
18
+ end
19
+
20
+ if header_size.present?
21
+ output = output.select { |line|
22
+ (line.is_a?(Himekaminize::Nodes::Header) && header_size >= line.size) || !line.is_a?(Himekaminize::Nodes::Header)
23
+ }
24
+ end
25
+
26
+ {
27
+ context: context,
28
+ output: output,
29
+ }
30
+ end
31
+
32
+ private
33
+
34
+ def only_header?
35
+ @context[:only_header].presence || false
36
+ end
37
+
38
+ def header_size
39
+ @context[:header_size].presence || DEFAULT_HEADER_SIZE
40
+ end
41
+ end
42
+ end
43
+ end
@@ -6,23 +6,23 @@ module Himekaminize
6
6
  seq = 0
7
7
  @context = context
8
8
  output = output.map do |line|
9
- if line.is_a?(String) && line =~ /\A\s*(#{Himekaminize::Task::INCOMPLETE_PATTERN}|#{Himekaminize::Task::COMPLETE_PATTERN})/
9
+ if line.is_a?(String) && line =~ /\A\s*(#{Himekaminize::Nodes::Task::INCOMPLETE_PATTERN}|#{Himekaminize::Nodes::Task::COMPLETE_PATTERN})/
10
10
  seq += 1
11
- Himekaminize::Task.new(line, seq)
11
+ Himekaminize::Nodes::Task.new(line, seq)
12
12
  else
13
13
  line
14
14
  end
15
15
  end
16
16
 
17
17
  if only_task_list?
18
- output = output.select { |line| line.is_a?(Himekaminize::Task) }
18
+ output = output.select { |line| line.is_a?(Himekaminize::Nodes::Task) }
19
19
  end
20
20
 
21
21
  if update_task_status_list.present?
22
22
  seq = 1
23
23
  update_task_status_list.each do |v|
24
24
  output = output.map do |line|
25
- if line.is_a?(Himekaminize::Task) && line.sequence == v[:sequence]
25
+ if line.is_a?(Himekaminize::Nodes::Task) && line.sequence == v[:sequence]
26
26
  line.update_status(v[:status].to_sym)
27
27
  line
28
28
  else
@@ -0,0 +1,9 @@
1
+ module Himekaminize
2
+ module Nodes
3
+ class BaseNode
4
+ def to_s
5
+ raise ::NotImplementedError
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,30 @@
1
+ module Himekaminize
2
+ module Nodes
3
+ class Header < BaseNode
4
+
5
+ PATTERN = /\#{1,6}/
6
+ attr_accessor :space, :name, :level, :size
7
+
8
+ def initialize(line)
9
+ @space, @level, @name = split_name_and_level(line)
10
+ @size = count_size
11
+ end
12
+
13
+ def to_s
14
+ sprintf("%s%s%s\n", @space, @level, @name)
15
+ end
16
+
17
+ private
18
+
19
+ def split_name_and_level(line)
20
+ /\A(\s*)(#{PATTERN})(.*)/.match(line) do |m|
21
+ [m[1], m[2], m[3]]
22
+ end
23
+ end
24
+
25
+ def count_size
26
+ @level.length
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,42 @@
1
+ module Himekaminize
2
+ module Nodes
3
+ class Task < BaseNode
4
+ INCOMPLETE_PATTERN = /[-+*]\s\[\s\]\s/
5
+ COMPLETE_PATTERN = /[-+*]\s\[[xX]\]\s/
6
+
7
+ INCOMPLETE_MD = '- [ ]'.freeze
8
+ COMPLETE_MD = '- [x]'.freeze
9
+ attr_accessor :name, :status, :sequence
10
+
11
+ COMPLETE_STATUSE = :complete
12
+ INCOMPLETE_STATUSE = :incomplete
13
+ STATUSES = %I(#{COMPLETE_STATUSE} #{INCOMPLETE_STATUSE})
14
+
15
+ def initialize(line, sequence)
16
+ @sequence = sequence
17
+ @status, @name, @space = split_name_and_status(line)
18
+ end
19
+
20
+ def to_s
21
+ status_str = @status == COMPLETE_STATUSE ? COMPLETE_MD : INCOMPLETE_MD
22
+ sprintf("%s%s %s\n", @space, status_str, @name)
23
+ end
24
+
25
+ def update_status(status)
26
+ return false unless STATUSES.include?(status)
27
+ @status = status
28
+ end
29
+
30
+ private
31
+ def split_name_and_status(line)
32
+ /\A(\s*)(#{INCOMPLETE_PATTERN}|#{COMPLETE_PATTERN})(.*)/.match(line) do |m|
33
+ if m[2] =~ /#{INCOMPLETE_PATTERN}/
34
+ return [INCOMPLETE_STATUSE, m[3], m[1]]
35
+ else
36
+ return [COMPLETE_STATUSE, m[3], m[1]]
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,14 @@
1
+ require "active_support/core_ext/object"
2
+ module Himekaminize
3
+ class Outline
4
+ include ::Himekaminize::Filterable
5
+ class << self
6
+ # @return [Array<Himekaminize::Filters::BaseFilter>]
7
+ def filter_classes
8
+ @filter_classes ||= [
9
+ ::Himekaminize::Filters::HeaderFilter
10
+ ]
11
+ end
12
+ end
13
+ end
14
+ end
@@ -1,3 +1,3 @@
1
1
  module Himekaminize
2
- VERSION = "0.0.9"
2
+ VERSION = "0.0.10"
3
3
  end
data/lib/himekaminize.rb CHANGED
@@ -1,6 +1,10 @@
1
1
  require "himekaminize/filterable"
2
- require "himekaminize/task"
2
+ require "himekaminize/nodes/base_node"
3
+ require "himekaminize/nodes/task"
4
+ require "himekaminize/nodes/header"
3
5
  require "himekaminize/filters/base_filter"
4
6
  require "himekaminize/filters/task_filter"
7
+ require "himekaminize/filters/header_filter"
8
+ require "himekaminize/outline"
5
9
  require "himekaminize/task_list"
6
10
  require "himekaminize/version"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: himekaminize
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - otukutun
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-09-11 00:00:00.000000000 Z
11
+ date: 2017-09-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -100,8 +100,12 @@ files:
100
100
  - lib/himekaminize.rb
101
101
  - lib/himekaminize/filterable.rb
102
102
  - lib/himekaminize/filters/base_filter.rb
103
+ - lib/himekaminize/filters/header_filter.rb
103
104
  - lib/himekaminize/filters/task_filter.rb
104
- - lib/himekaminize/task.rb
105
+ - lib/himekaminize/nodes/base_node.rb
106
+ - lib/himekaminize/nodes/header.rb
107
+ - lib/himekaminize/nodes/task.rb
108
+ - lib/himekaminize/outline.rb
105
109
  - lib/himekaminize/task_list.rb
106
110
  - lib/himekaminize/version.rb
107
111
  homepage: https://github.com/otukutun/himekaminize
@@ -1,41 +0,0 @@
1
- module Himekaminize
2
- class Task
3
- INCOMPLETE_PATTERN = /[-+*]\s\[\s\]\s/
4
- COMPLETE_PATTERN = /[-+*]\s\[[xX]\]\s/
5
-
6
- INCOMPLETE_MD = '- [ ]'.freeze
7
- COMPLETE_MD = '- [x]'.freeze
8
- attr_accessor :name, :status, :sequence
9
-
10
- COMPLETE_STATUSE = :complete
11
- INCOMPLETE_STATUSE = :incomplete
12
- STATUSES = %I(#{COMPLETE_STATUSE} #{INCOMPLETE_STATUSE})
13
-
14
- def initialize(line, sequence)
15
- @sequence = sequence
16
- @status, @name, @space = split_name_and_status(line)
17
- end
18
-
19
- def to_s
20
- status_str = @status == COMPLETE_STATUSE ? COMPLETE_MD : INCOMPLETE_MD
21
- sprintf("%s%s %s\n", @space, status_str, @name)
22
- end
23
-
24
- def update_status(status)
25
- return false unless STATUSES.include?(status)
26
- @status = status
27
- end
28
-
29
- private
30
- def split_name_and_status(line)
31
- /\A(\s*)(#{INCOMPLETE_PATTERN}|#{COMPLETE_PATTERN})(.*)/.match(line) do |m|
32
- if m[2] =~ /#{INCOMPLETE_PATTERN}/
33
- return [INCOMPLETE_STATUSE, m[3], m[1]]
34
- else
35
- return [COMPLETE_STATUSE, m[3], m[1]]
36
- end
37
- end
38
- end
39
-
40
- end
41
- end