2012-12-10 2 views
0

다음 루비 코드는 자동으로 부두 패드 안에 페이지를 생성하고 각 페이지에 메타 태그를 추가합니다.애플 스크립트 (appscript를 통해) 루프에서 처리를 중지

vp = app("VoodooPad.app") 
doc = vp.open vpdoc 

page_names = [@name] 

if self.class.to_s.match('Stake::Stack') 
    # Create the release notes page. Only run on parent stack 
    notes = "#{@name} Release Notes" 
    page_names.push notes 
    doc.remove :with_name => notes 
    doc.create :new => :page, :with_name => notes, :with_content => self.release_notes 
end 

# Create the settings page 
settings = "#{@name} Settings" 
page_names.push settings 
doc.remove :with_name => settings 
doc.create :new => :page, :with_name => settings, :with_content => self.to_md 

page_names.each do |page_name| 
    # Add the meta tags to the product page 
    page = doc.pages[page_name] 
    puts page_name 
    page.remove_meta_record :with_key => "description" 
    page.remove_meta_record :with_key => "url" 
    page.remove_meta_record :with_key => "name" 
    page.remove_meta_record :with_key => "image" 
    page.remove_meta_record :with_key => "version" 
    page.remove_meta_record :with_key => "stacks_version" 
    page.add_meta_record :with_value => {'version'   => @version_str} 
    page.add_meta_record :with_value => {'stacks_version' => @stacks_version} 
    page.add_meta_record :with_value => {'subtitle'   => @subtitle} 
    page.add_meta_record :with_value => {'url'    => @info_url} 
    page.add_meta_record :with_value => {'image'   => @basename + '@128.png'} 
    page.add_meta_record :with_value => {'name'    => @name} 
end 

각 블록에는 3 개의 페이지에 동일한 메타 태그가 추가됩니다. 그러나 태그는 3 페이지 중 2 페이지에만 추가됩니다. 예를 들어 "배지"라는 이름을 사용하면 여기에 내 페이지 이름이 있습니다.

배열의 순서에 관계없이 "배지"페이지에는 항상 올바르게 태그가 지정됩니다. 그러나 다른 2 페이지는 처음 처리됩니다. 다른 하나는 그렇지 않습니다.

페이지 이름에 공백이있을 수도 있습니다. 그러나 그것은 중요하지 않습니다. 나는 똑같은 행동을한다. 코드를 발견하면 동적으로 두 페이지를 모두 동적으로 생성합니다.

나는 또한 타이밍 문제 일 수 있다고 생각하여 수면을 추가하려고 시도했습니다. 아니.

막혔습니다. 도움.

답변

0

나는 그것을 알아 냈다. 태그를 추가하는 페이지는 현재 활성 페이지가 될 수 없습니다.

vp = app("VoodooPad.app") 
doc = vp.open vpdoc 

page_names = Array.new 

if self.class.to_s.match('Stake::Stack') 
    # Only the parent stack has a main page 
    page_names.push @name 

    # Create the release notes page. Only run on parent stack 
    notes = "#{@name} Release Notes" 
    page_names.push notes 
    doc.remove :with_name => notes 
    doc.create :new => :page, :with_name => notes, :with_content => self.release_notes 
end 

# Create the settings page 
settings = "#{@name} Settings" 
page_names.push settings 
doc.remove :with_name => settings 
doc.create :new => :page, :with_name => settings, :with_content => self.to_md 

# Have to open to different page to ensure its not open when I add meta tags. 
doc.open_page :with_name => 'index' 

page_names.each do |page_name| 
    # Add the meta tags to the product page 
    page = doc.pages[page_name] 
    puts page_name 
    page.remove_meta_record :with_key => "description" 
    page.remove_meta_record :with_key => "url" 
    page.remove_meta_record :with_key => "name" 
    page.remove_meta_record :with_key => "image" 
    page.remove_meta_record :with_key => "version" 
    page.remove_meta_record :with_key => "stacks_version" 
    page.add_meta_record :with_value => {'version'   => @version_str} 
    page.add_meta_record :with_value => {'stacks_version' => @stacks_version} 
    page.add_meta_record :with_value => {'subtitle'   => @subtitle} 
    page.add_meta_record :with_value => {'url'    => @info_url} 
    page.add_meta_record :with_value => {'image'   => "#{@basename}@128.png".downcase} 
    page.add_meta_record :with_value => {'name'    => @name} 
    # Open current page to ensure next page is not open or else cannot add tags 
    doc.open_page :with_name => page_name 
end 
관련 문제