سؤال

وبعد أن أمضى بضع ساعات مع روبي المصحح تعلمت أخيرا أن أحتاج لتنظيف بعض صفحات HTML تالف قبل أن أتمكن من إطعام تلك التي Hpricot. الحل الأمثل وجدت حتى الآن هو مرتب روبي واجهة .

مرتب يعمل كبيرة من سطر الأوامر، وكذلك أعمال اجهة روبي. ومع ذلك، فإنه يتطلب دل / استيراد ، التي فشلت في تحميل في JRuby:

$ jirb
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'tidy'
LoadError: no such file to load -- dl/import

هل هذه المكتبة متاحة للJRuby؟ وكشف البحث على شبكة الإنترنت أن rel="nofollow أنها لم تكن متاحة العام الماضي .

وبدلا من ذلك، يمكن للشخص اقتراح سبل أخرى لتنظيف HTML تالف في JRuby؟

تحديث

وبعد اقتراح ماركوس "أنا الآن استخدام مرتب عبر popen بدلا من libtidy. نشرت لي رمز التي أنابيب البيانات وثيقة من خلال أنيق للرجوع إليها في المستقبل. نأمل، وهذا هو قوي والمحمولة.

def clean(data)
    cleaned = nil
    tidy = IO.popen('tidy -f "log/tidy.log" --force-output yes -wrap 0 -utf8', 'w+')
    begin
        tidy.write(data)
        tidy.close_write
        cleaned = tidy.read
        tidy.close_read
    rescue Errno::EPIPE
        $stderr.print "Running 'tidy' failed: " + $!
        tidy.close
    end        
    return cleaned if cleaned and cleaned != ""
    return data
end
هل كانت مفيدة؟

المحلول

هل يمكن استخدامه من سطر الأوامر من داخل JRuby مع %x{...} أو backticks. قد تحتاج أيضا إلى النظر في popen (والأنابيب الأشياء من خلال ذلك).

وليس أنيقة ربما، ولكن من المرجح أن تحصل على الذهاب مع الحد الأدنى من المتاعب من محاولة لفوضى مع المكتبات غير معتمد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top