lib/expandsync/atext.rb in expandsync-0.1.0 vs lib/expandsync/atext.rb in expandsync-0.1.1

- old
+ new

@@ -1,35 +1,69 @@ # ====================================================== # AText Class # ====================================================== class AText - attr_accessor :filepath, :snippets + # ==================================================== + # Constants + # ==================================================== + OUTPUT_FILENAME = 'aText-snippets.csv' + OUTPUT_PATH = ENV['HOME'] # ==================================================== + # Attributes + # ==================================================== + attr_accessor :output_file, :snippet_csv, :snippets + + # ==================================================== # Methods # ==================================================== # ---------------------------------------------------- # initialize method # # @param csv_filepath The filepath to the aText CSV # @return Void # ---------------------------------------------------- - def initialize(csv_filepath) - begin - @filepath = csv_filepath - @snippets = CSV.read(csv_filepath) - rescue - fail "Invalid aText CSV file: #{ csv_filepath }" + def initialize(csv_filepath, custom_output_path) + if custom_output_path.nil? + @output_file = File.join(OUTPUT_PATH, OUTPUT_FILENAME) + else + if Dir.exists?(File.dirname(custom_output_path)) + @output_file = custom_output_path + else + fail "Invalid output directory for aText: #{ custom_output_path }" + end end + + if File.exists?(csv_filepath) && File.extname(csv_filepath) == '.csv' + begin + @snippets = CSV.read(csv_filepath) + rescue + fail "Could not load CSV from file: #{ csv_filepath }" + end + + @snippets.each { |s| s[2] = 'aText' } + else + fail "Invalid CSV file: #{ csv_filepath }" + end end # ---------------------------------------------------- # construct_data method # # Outputs a CSV listing of the supplied snippets # @param new_snippets The snippet array to use # @return String # ---------------------------------------------------- def construct_data(new_snippets) - CSV.generate { |csv| new_snippets.each { |s| csv << [s[0], s[1]] } } + @snippet_csv = CSV.generate { |csv| new_snippets.each { |s| csv << [s[0], s[1]] } } + end + + # ---------------------------------------------------- + # save method + # + # Saves the current snippets to Settings.textexpander. + # @return Void + # ---------------------------------------------------- + def save + File.open(@output_file, 'w') {|f| f.write(@snippet_csv) } end end \ No newline at end of file