Sha256: dd2546ca2b38c6dc80553a906aa00231cb719160b434d3be23bc11e4ecb4e177

Contents?: true

Size: 794 Bytes

Versions: 3

Compression:

Stored size: 794 Bytes

Contents

module Todoloo
  class Transformer < Parslet::Transform
    rule(file: subtree(:x)) { x.compact }

    rule(lines: subtree(:x)) { x }

    rule(line: {code: subtree(:x)}) { nil }

    rule(line: {code: subtree(:x), comment: subtree(:y)}) { y }

    # Discard lines with only code and comments without tasks
    rule(line: {code: subtree(:x), comment: simple(:y)}) { nil }

    rule(line: {comment: subtree(:x)}) { x }

    rule(line: {comment: simple(:x)}) { nil }

    rule(type: simple(:type), topics: sequence(:topics), description: sequence(:description)) do
      {type: type, topics: topics, description: description.empty? ? "" : (raise "must be empty")}
    end

    rule(topic: simple(:x)) { x }

    rule(task: subtree(:task)) { task }

    rule([{text: simple(:x)}]) { x }
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
todoloo-0.0.3 lib/todoloo/transformer.rb
todoloo-0.0.2 lib/todoloo/transformer.rb
todoloo-0.0.1 lib/todoloo/transformer.rb