Sha256: 14f38e3a27396e6f6e079703921fa202b7369e3d4274d72b13e0150b85193e78

Contents?: true

Size: 1.26 KB

Versions: 3

Compression:

Stored size: 1.26 KB

Contents

module Evertils
  module Controller
    class Log < Controller::Base
      def pre_exec
        super

        @note_helper = Evertils::Helper.load('Note')
        @api_helper = Evertils::Helper.load('ApiEnmlHandler', {})
      end

      # Send arbitrary text to the daily log
      def message(text)
        Notify.error('Text argument is required', {}) if text.nil?

        note = @note_helper.find_note(:Daily)
        edit_conf = {
          search: 'Triage',
          append: text
        }

        modify(note, edit_conf)
      end

      private

      # Update a note with content
      def modify(note, conf)
        xml = @api_helper.from_str(note.entity.content)
        xml_helper = Evertils::Helper.load('Xml', xml)

        time = Time.now.strftime('%I:%M')
        target = xml.search("div:contains('#{conf[:search]}')").first.next_element
        nearest_ul = target.search('ul')
        span = xml_helper.span("#{time} - #{conf[:append]}")
        li = xml_helper.li(span)

        if nearest_ul.empty?
          node = xml_helper.ul(li)
          target.children.before(node)
        else
          nearest_ul.children.after(li)
        end

        note.entity.content = xml.to_s
        Notify.success("Item logged at #{time}") if note.update
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
evertils-0.3.20 lib/evertils/controllers/log.rb
evertils-0.3.19 lib/evertils/controllers/log.rb
evertils-0.3.18 lib/evertils/controllers/log.rb