class Milkode::MilkodeYaml
Constants
- EMPTY_YAML
- MILKODE_YAML_VERSION
Attributes
contents[R]
Public Class Methods
new(str = nil)
click to toggle source
# File lib/milkode/cdstk/milkode_yaml.rb, line 23 def initialize(str = nil) @data = YAML.load(str || EMPTY_YAML) @contents = parse_contents end
Public Instance Methods
add(package)
click to toggle source
パッケージを追加
# File lib/milkode/cdstk/milkode_yaml.rb, line 37 def add(package) @contents.push package update_contents end
dump()
click to toggle source
# File lib/milkode/cdstk/milkode_yaml.rb, line 28 def dump YAML.dump(@data) end
find_dir(directory)
click to toggle source
ディレクトリ名が同じパッケージを検索
# File lib/milkode/cdstk/milkode_yaml.rb, line 73 def find_dir(directory) @contents.find {|v| v.directory == directory} end
find_name(name)
click to toggle source
名前が同じパッケージを検索
# File lib/milkode/cdstk/milkode_yaml.rb, line 63 def find_name(name) @contents.find {|v| v.same_name?(name)} end
global_gitignore()
click to toggle source
# File lib/milkode/cdstk/milkode_yaml.rb, line 105 def global_gitignore @data['global_gitignore'] end
match_all(keyword)
click to toggle source
指定キーワードにマッチする全てのパッケージを返す
# File lib/milkode/cdstk/milkode_yaml.rb, line 68 def match_all(keyword) @contents.find_all {|p| p.name.include? keyword } end
migrate()
click to toggle source
マイグレーション
# File lib/milkode/cdstk/milkode_yaml.rb, line 90 def migrate if (version != MILKODE_YAML_VERSION) # バージョン番号 @data['version'] = MILKODE_YAML_VERSION # パッケージ contents.each{|v| v.migrate} # migrateが起きた true else false end end
package_root(dir)
click to toggle source
指定ディレクトリの所属するパッケージのルートディレクトリを得る。 見つからない場合はnilを返す。
# File lib/milkode/cdstk/milkode_yaml.rb, line 79 def package_root(dir) nd = Util.normalize_filename(dir) @contents.find_all {|v| nd =~ /^#{Regexp.escape(v.directory)}(:?\/|\Z)/ }.max_by {|v| v.directory.length } end
remove(package)
click to toggle source
パッケージを削除
# File lib/milkode/cdstk/milkode_yaml.rb, line 51 def remove(package) @contents.delete(package) update_contents end
remove_all()
click to toggle source
全てのパッケージを削除
# File lib/milkode/cdstk/milkode_yaml.rb, line 57 def remove_all @contents = [] update_contents end
set_global_gitignore(filename)
click to toggle source
# File lib/milkode/cdstk/milkode_yaml.rb, line 109 def set_global_gitignore(filename) @data['global_gitignore'] = filename end
update(package)
click to toggle source
同名パッケージの内容を置き換え
# File lib/milkode/cdstk/milkode_yaml.rb, line 43 def update(package) i = @contents.find_index {|v| v.same_name?(package.name) } raise unless i @contents[i] = package update_contents end
version()
click to toggle source
# File lib/milkode/cdstk/milkode_yaml.rb, line 32 def version @data['version'] end
Private Instance Methods
parse_contents()
click to toggle source
# File lib/milkode/cdstk/milkode_yaml.rb, line 115 def parse_contents @data['contents'].map do |v| Package.new(v) end end
update_contents()
click to toggle source
# File lib/milkode/cdstk/milkode_yaml.rb, line 121 def update_contents @data['contents'] = @contents.map{|v| v.hash } end