Усеченная скидка с цены?

Похоже, что компилятор использует неверную версию стандартной библиотеки для запуска самого себя.

Запустите задачу Gradle dependencies с аргументом --configuration kotlinCompilerClasspath в подпроекте, где сборка не может определить причину попадания неверной версии в путь к классам компилятора:

./gradlew dependencies --configuration kotlinCompilerClasspath

Правильный вывод должен выглядеть как:

------------------------------------------------------------
Project :examples/kotlin
------------------------------------------------------------

kotlinCompilerClasspath
\--- org.jetbrains.kotlin:kotlin-compiler-embeddable:1.3.11
     +--- org.jetbrains.kotlin:kotlin-stdlib:1.3.11
     |    +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.3.11
     |    \--- org.jetbrains:annotations:13.0
     +--- org.jetbrains.kotlin:kotlin-script-runtime:1.3.11
     \--- org.jetbrains.kotlin:kotlin-reflect:1.3.11
          \--- org.jetbrains.kotlin:kotlin-stdlib:1.3.11 (*)

(*) - dependencies omitted (listed previously)
10
задан dbr 28 December 2008 в 03:47
поделиться

5 ответов

  • Пишите/находите интеллектуальную функцию усечения HTML

Следование из http://mikeburnscoder.wordpress.com/2006/11/11/truncating-html-in-ruby/, с некоторыми модификациями правильно усечет HTML и легко позволит добавлять строку перед закрывающими тэгами.

>> puts "<p><b><a href=\"hi\">Something</a></p>".truncate_html(5, at_end = "...")
=> <p><b><a href="hi">Someth...</a></b></p>

Измененный код:

require 'rexml/parsers/pullparser'

class String
  def truncate_html(len = 30, at_end = nil)
    p = REXML::Parsers::PullParser.new(self)
    tags = []
    new_len = len
    results = ''
    while p.has_next? && new_len > 0
      p_e = p.pull
      case p_e.event_type
      when :start_element
        tags.push p_e[0]
        results << "<#{tags.last}#{attrs_to_s(p_e[1])}>"
      when :end_element
        results << "</#{tags.pop}>"
      when :text
        results << p_e[0][0..new_len]
        new_len -= p_e[0].length
      else
        results << "<!-- #{p_e.inspect} -->"
      end
    end
    if at_end
      results << "..."
    end
    tags.reverse.each do |tag|
      results << "</#{tag}>"
    end
    results
  end

  private

  def attrs_to_s(attrs)
    if attrs.empty?
      ''
    else
      ' ' + attrs.to_a.map { |attr| %{#{attr[0]}="#{attr[1]}"} }.join(' ')
    end
  end
end
6
ответ дан 4 December 2019 в 01:32
поделиться

Вот решение, которое работает на меня с Тканью.

  1. Преобразуйте его в HTML
  2. Усеките его.
  3. Удалите любые HTML-тэги, которые получили включенную половину с

    html_string.gsub(/<[^>]*$/, "")
    
  4. Затем использует Hpricot для чистки его и близко открытые теги

    html_string = Hpricot( html_string ).to_s 
    

Я делаю это в помощнике, и с кэшированием нет никакой проблемы производительности.

2
ответ дан 4 December 2019 в 01:32
поделиться

Вместо того, чтобы пытаться усечь текст, почему бы не 2 поля ввода, один для "вводной аннотации" и один для основных "кишок". Тем путем Ваши авторы будут знать точно, что является шоу когда, не имея необходимость полагаться на своего рода фанковое маркер EOF.

1
ответ дан 4 December 2019 в 01:32
поделиться

Вы могли использовать регулярное выражение для нахождения строки, состоящей из только "^" символы:

markdown_string = <<-eos
This article is an example of something or other.

This segment will be used as the snippet on the index page.

^^^^^^^^^^^^^^^

This text will be visible once clicking the "Read more.." link
eos

preview = markdown_string[0...(markdown_string =~ /^\^+$/)]
puts preview
1
ответ дан 4 December 2019 в 01:32
поделиться

Я должен согласиться с подходом «два входа», и автору контента не нужно будет беспокоиться, поскольку вы можете изменить фоновую логику, чтобы смешать два входа в один при отображении полное содержание.

full_content = input1 + input2 // perhaps with some complementary html, for a better formatting
0
ответ дан 4 December 2019 в 01:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: