私は面倒な状況に陥っています。私は現在失われている静的サイトジェネレータ(webby)で作成された多数のデータを移行する過程にあり、準ERBテンプレートファイルに大量のデータが格納されています。既存のテキストファイルからハッシュの配列を抽出するにはどうすればよいですか?
これらのファイルを解析して必要なものを取得し、それらを新しいアプリケーションデータファイルに書き込むRubyを作成しようとしています。
私が遭遇する問題は、既存のファイルに多くの正規化がなく、一部のパターンとのマッチングが難しいことです。
例えば、それぞれのイベント(これは技術会議ウェブサイト用)は、ハッシュの配列で構成されたその特定のイベントのスポンサーに関する情報を含む_sponsors.txt
ファイルを持っています。これらの配列は必ずしも全く同じ名前ではありませんが、一般的には類似しています。
これは、ファイルの一つの抜粋です:
<% @psponsors = [
{ :image => 'ca_technologies.png', :name => 'CA Technologies', :link => 'http://www.ca.com/fr', :width => '100px', :height => '100px' },
{ :image => 'puppetlabs.png', :name => 'PuppetLabs', :link => 'https://puppetlabs.com', :width => '100px', :height => '100px' },
{ :image => 'microsoft_azure.png', :name => 'Microsoft Azure', :link => 'http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200618989', :width => '100px', :height => '100px' },
] %>
<% if @psponsors.empty? %>
<i> <a href='<%= File.join('/',@eventhome,'/sponsor') -%>'>Be the first to sponsor!</a></i>
<% end %>
<% @psponsors.each do |sponsor| %>
<a href="<%= sponsor[:link] %>"><img border="1" alt="<%= sponsor[:name] %>" title="<%= sponsor[:name] %>" width="<%= sponsor[:width] %>" height="<%= sponsor[:height] %>" src="<%= File.join('/',@eventhome,"logos/#{sponsor[:image]}") %>" /></a>
<% end %>
<h1>Gold sponsors</h1>
<% @gsponsors = [
{ :image => 'normation.png', :name => 'Normation', :link => 'http://www.normation.com', :width => '100px', :height => '100px' },
{ :image => 'gandi.png', :name => 'Gandi.net', :link => 'https://www.gandi.net', :width => '100px', :height => '100px' },
{ :image => 'xebialabs.png', :name => 'XebiaLabs', :link => 'http://www.xebialabs.com', :width => '100px', :height => '100px' },
{ :image => 'redhat.png', :name => 'Red Hat', :link => 'https://www.redhat.com', :width => '100px', :height => '100px' },
{ :image => 'delphix.png', :name => 'Delphix', :link => 'http://delphix.com', :width => '100px', :height => '100px' },
{ :image => 'chef.png', :name => 'Chef', :link => 'http://chef.io', :width => '100px', :height => '100px' },
] %>
私は私が探している外部のパラメータ間のファイル全体と一致して読みしようとすると、私はマッチの束を取得し終わります私はほしくない。私の現在の回避策は、単に各行を読み込んで、その行が正しい開始点と一致する場合に状態を設定し、読み込みを続け、最後にヒットするとブレークします。これはまったく愉快ではないようですが、私はこれを行うもっとエレガントな方法が欠けていると確信しています。
だからあなたは '@のpsponsors'と' @gspoを引っ張って欲しいものですnsors'をこのファイルから削除しますか? – thesecretmaster
修正。問題は、ファイルの中には '@ psonsors'でなく、' @sponsors'や '@sponsors'かもしれないということです。しかし、一般的に言えば、私がこのサンプルでいくらか一般的に行う方法を理解できれば、それを異常値とどのように動作させるかを理解することができます。 –