class Anpo::PO

Public Class Methods

new(io = nil) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 330
def initialize(io = nil)
  super()
  @caches = []
  @header = nil
  @msg = {}

  if io
    _self = self
    proc_new_entry = proc do |buf|
      ent = POEntry.new(buf)
      set_on_changed(ent)

      if ent.is_header?
        if @header
          STDERR.print("duplicate header\n" + ent.to_s)
        else
          @header = ent
        end
      elsif ent.msgid.nil?
        @caches.push(ent)
      else
        push(ent)
      end
    end

    buffer = []
    while (l = io.gets)
      if l == "\n"
        proc_new_entry.call(buffer)
        buffer = []
      else
        buffer.push(l)
      end
    end

    proc_new_entry.call(buffer)
  else
    @header = POEntry.new
    set_on_changed(@header)
    @header.msgid = ""
    @header.msgstr = "\n"
  end
end
parse(input, mode = "r", _opt = {}, &block) click to toggle source
# File lib/anpo.rb, line 283
def self.parse(input, mode = "r", _opt = {}, &block)
  po = nil
  if input.is_a?(IO)
    po = PO.new(input)
  elsif FileTest.exists?(input.to_s)
    File.open(input.to_s, mode) do |f|
      po = PO.new(f)
    end
  end

  if block
    block.call(po)
    nil
  else
    po
  end
end

Public Instance Methods

<<(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 122
def <<(*args)
  super
  @dirty = true
end
append(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 127
def append(*args)
  super
  @dirty = true
end
clear(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 132
def clear(*args)
  super
  @dirty = true
end
collect!(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 137
def collect!(*args)
  super
  @dirty = true
end
compact!(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 142
def compact!(*args)
  super
  @dirty = true
end
concat(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 147
def concat(*args)
  super
  @dirty = true
end
delete(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 152
def delete(*args)
  super
  @dirty = true
end
delete_at(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 157
def delete_at(*args)
  super
  @dirty = true
end
delete_by_ids(deleteids) click to toggle source
# File lib/anpo.rb, line 322
def delete_by_ids(deleteids)
  ids = collect { |e| e.msgid }

  raise unless (deleteids - ids).empty?

  delete_if { |e| deleteids.include?(e.msgid) }
end
delete_if(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 162
def delete_if(*args)
  super
  @dirty = true
end
entry(id) click to toggle source
# File lib/anpo.rb, line 301
def entry(id)
  find { |e| e.msgid == id }
end
fill(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 167
def fill(*args)
  super
  @dirty = true
end
filter!(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 172
def filter!(*args)
  super
  @dirty = true
end
filter_by_ids(keepids, _force = false) click to toggle source
# File lib/anpo.rb, line 314
def filter_by_ids(keepids, _force = false)
  ids = collect { |e| e.msgid }

  raise unless (keepids - ids).empty?

  keep_if { |e| keepids.include?(e.msgid) }
end
flatten!(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 177
def flatten!(*args)
  super
  @dirty = true
end
insert(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 182
def insert(*args)
  super
  @dirty = true
end
keep_if(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 187
def keep_if(*args)
  super
  @dirty = true
end
map!(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 192
def map!(*args)
  super
  @dirty = true
end
msg() click to toggle source
# File lib/anpo.rb, line 272
def msg
  if @dirty
    @msg.clear
    each do |e|
      @msg[e.msgid] = e.msgstr
    end
    @dirty = false
  end
  @msg
end
new_entry(msgid, msgstr, comments = nil) click to toggle source
# File lib/anpo.rb, line 305
def new_entry(msgid, msgstr, comments = nil)
  poe = POEntry.new
  set_on_changed(poe)
  poe.msgid = msgid
  poe.msgstr = msgstr
  poe.comments = comments || []
  push(poe)
end
pop(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 197
def pop(*args)
  super
  @dirty = true
end
prepend(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 202
def prepend(*args)
  super
  @dirty = true
end
push(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 207
def push(*args)
  super
  @dirty = true
end
reject!(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 212
def reject!(*args)
  super
  @dirty = true
end
replace(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 217
def replace(*args)
  super
  @dirty = true
end
reverse!(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 222
def reverse!(*args)
  super
  @dirty = true
end
rotate!(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 227
def rotate!(*args)
  super
  @dirty = true
end
select!(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 232
def select!(*args)
  super
  @dirty = true
end
shift(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 237
def shift(*args)
  super
  @dirty = true
end
shuffle!(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 242
def shuffle!(*args)
  super
  @dirty = true
end
slice!(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 247
def slice!(*args)
  super
  @dirty = true
end
sort!(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 252
def sort!(*args)
  super
  @dirty = true
end
sort_by!(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 257
def sort_by!(*args)
  super
  @dirty = true
end
to_csv(opts = {}) click to toggle source
# File lib/anpo.rb, line 378
def to_csv(opts = {})
  # CSV.new(StringIO.new, opts)
  csvstr = CSV.generate(opts) do |csv|
    ([@header] + self + @caches).each do |e|
      csv << [e.comments_to_s.chop, e.msgid, e.msgstr]
    end
  end
  CSV.new(StringIO.new(csvstr))
end
to_s(with_cache = true) click to toggle source
# File lib/anpo.rb, line 374
def to_s(with_cache = true)
  ([@header] + self + (with_cache ? @caches : [])).collect { |e| e.to_s }.join("\n").to_s
end
uniq!(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 262
def uniq!(*args)
  super
  @dirty = true
end
unshift(*args) click to toggle source
Calls superclass method
# File lib/anpo.rb, line 267
def unshift(*args)
  super
  @dirty = true
end

Private Instance Methods

set_on_changed(entry) click to toggle source
# File lib/anpo.rb, line 114
def set_on_changed(entry)
  entry.on_changed do |_e, _newid, _newstr|
    @dirty = true
  end
end