I'm going to be using YAML to keep values that will be use to fill very very long forms. Once of the nice things about YAML is that is supports comments.
Since I'm writing the YAML by hand, I need to validate the YAML before I use it. The way I do it is to run the following file in SciTE an then look at the error reported. ---my code starts---- require 'yaml' require 'pp' tree = YAML::load( File.open( 'file.yml' )) #print the yaml file puts "\nthis is the yaml\n" puts tree.to_yaml #the structure produced puts "\nthis is the stucture from this yaml\n\n" pp tree ---end of code------- Anyone know a better tool to parses YAML and gives error message? -Pierre Garigue -----Original Message----- From: Jeff Wood [mailto:[EMAIL PROTECTED] Sent: Monday, August 29, 2005 7:10 PM To: [email protected] Subject: Re: [Wtr-general] Key / value pairs. That's one way to do it ... Another is to use YAML which has a pretty heavy following with the Ruby community in general... So, the following would do the same ... You can simply use a hash to store things... Here's a quick script to load up a sample --SCRIPT-- require 'yaml' config = Hash.new config["username"] = "joe" config["password"] = "pass" config["foo"] = "bar" config["baz"] = 5 config["zoo"] = [ 1, 2, 3, 4, 5 ] File.open( "config.yaml", "w" ) { |file| file << config.to_yaml } --SCRIPT-- Then in your normal script you can get to this as simply as: --SCRIPT-- require 'yaml' config = YAML.load( File.new( 'config.yaml' ) ) config.each_pair { |key,value| puts "#{ key } -- #{ value }" } --SCRIPT-- It's that easy ... YAML is pretty cool. Hope that helps. j. On 8/29/05, Kingsley <[EMAIL PROTECTED]> wrote: > > > > Hi > > > > You might find this useful: > > > > class MissingConfigurationFile < ArgumentError ; end > > > > class MyConfig > > > > MyConfig = Struct.new("MyConfig", :property, :value) > > > > def initialize(config_file) > > begin > > @config = File.readlines(config_file) > > rescue > > raise MissingConfigurationFile, "Can't find config file" > > end > > end > > > > def parse_config_file > > rem_array = [] > > prop_array = [] > > @config.each do |line| > > if line.match(/^#/) > > rem_array << line > > else > > unless line.match(/^\n$/) then prop_array << line.chomp end > > end > > end > > return prop_array - rem_array > > end > > > > def properties > > config_hash = {} > > parse_config_file.each do |data| > > split = data.split("=") > > property = split[0].gsub(/\s*/, "") > > value = split[1].gsub(/$\s*/, "").gsub(/^\s*/, "") > > config_hash.store(property,MyConfig.new(property, value)) > > end > > return config_hash > > end > > > > end > > > > myConfig = MyConfig.new("config.txt").properties > > config_option_name = myConfig['OPTION_NAME].property > > config_option_value = myConfig['OPTION_NAME'].value > > > > config.txt > > > > # Lines with a # are ignored > > OPTION_NAME = put some value here > > OPTION_2 = more options > > > > Hope it's useful > > > > Thanks > > > > Kingsley > > > > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of > [EMAIL PROTECTED] > Sent: 29 August 2005 06:40 > To: [email protected] > Subject: [Wtr-general] Key / value pairs. > > > > This email is to be read subject to the disclaimer below. > > > Hello all, > > I'm new to Watirr (and Ruby), so forgive me if the question is rather > simplistic... > > What I'd like to do, is to have a configuration file (eg. config.txt), > which would have a number of key/value pairs, such as "UserName=user", which > would be read by a test script to, for example, log into a page. Hence, what > I need, is a method to read each line in a given file; strip off the > comments (if exist; denoted by #); find the pair based on the key (ie. > UserName) and get the value (ie. user) and store it in a variable. > > Any help would be greatly appreciated. > > Regards > > Leon > > -------------------- > NOTICE - This communication contains information which is confidential and > the copyright of Ernst & Young or a third party. > > If you are not the intended recipient of this communication please delete > and destroy all copies and telephone Ernst & Young on 1800 655 717 > immediately. If you are the intended recipient of this communication you > should not copy, disclose or distribute this communication without the > authority of Ernst & Young. > > Any views expressed in this Communication are those of the individual > sender, except where the sender specifically states them to be the views of > Ernst & Young. > > Except as required at law, Ernst & Young does not represent, warrant and/or > guarantee that the integrity of this communication has been maintained nor > that the communication is free of errors, virus, interception or > interference. > > Liability limited by a scheme approved under Professional Standards > Legislation. > -------------------- > > > If this communication is a "commercial electronic message" (as defined in > the Spam Act 2003) and you do not wish to receive communications such as > this, please forward this communication to [EMAIL PROTECTED] > _______________________________________________ > Wtr-general mailing list > [email protected] > http://rubyforge.org/mailman/listinfo/wtr-general > > > -- "So long, and thanks for all the fish" Jeff Wood _______________________________________________ Wtr-general mailing list [email protected] http://rubyforge.org/mailman/listinfo/wtr-general _______________________________________________ Wtr-general mailing list [email protected] http://rubyforge.org/mailman/listinfo/wtr-general
