কিভাবে পিসিতে মার্কডাউন ফাইলগুলি ডকুউকিতে রূপান্তর করবেন


13

আমি একটি টুল বা স্ক্রিপ্ট রূপান্তর করতে খুঁজছি Markdown ফাইল Dokuwiki বিন্যাস, যে একটি পিসিতে চালানো হবে।

এই যাতে আমি ব্যবহার করতে পারেন MarkdownPad একটি Dokuwiki ইনস্টলেশন আমি কোন নিয়ন্ত্রণ আছে আপলোড করার নথি প্রাথমিক খসড়া তৈরি করতে একটি পিসিতে, এবং তারপর তাদের Dokuwiki ফর্ম্যাটে রূপান্তর। (এর অর্থ হ'ল মার্কডাউন প্লাগইনটি আমার কোনও কাজে আসেনি))

আমি নিজেই রূপান্তর করতে পাইথন স্ক্রিপ্ট লেখার জন্য সময় ব্যয় করতে পারতাম , তবে আমি যদি এই বিষয়টি ইতিমধ্যে বিদ্যমান থাকে তবে আমি এটিতে সময় ব্যয় করা এড়াতে চাই।

আমি যে মার্কডাউন ট্যাগগুলিকে সমর্থন / রূপান্তর করতে চাই তা হ'ল:

  • শিরোনাম স্তর 1 - 5
  • বোল্ড, ইটালিক, আন্ডারলাইন, নির্দিষ্ট প্রস্থের ফন্ট
  • সংখ্যাযুক্ত এবং সংখ্যাহীন তালিকা
  • হাইপারলিঙ্কস
  • অনুভূমিক বিধি

এই জাতীয় সরঞ্জামটি কি বিদ্যমান, বা কোনও ভাল প্রারম্ভিক পয়েন্ট পাওয়া যায়?


আমি যে জিনিসগুলি খুঁজে পেয়েছি এবং বিবেচনা করেছি


ডিডাব্লু আউটপুট জন্য প্যান্ডোক ফিল্টার যুক্ত করুন ?! এবং, বিটিডব্লিউ, অনুরোধ করা ছোট সাবসেটের জন্য আপনি ডিডাব্লুতে খাঁটি মার্কডাউন দিয়ে শুরু করার চেষ্টা করতে পারেন (আপনার কী ডাব্লু সিনট্যাক্সের নিয়মগুলি পড়েছিল ?!)
অলস ব্যাজার

@ লেজিবাজার ধন্যবাদ আমি কেবল jnnmacfarlane.net/pandoc/scriptting.html পড়েছি এবং যতদূর আমি দেখতে পাচ্ছি, এটি প্যান্ডোক এএসটি পরিবর্তন করার বিষয়ে। আমি এএসটি অপরিবর্তিত রাখতে চাই, তবে আউটপুট ফর্ম্যাটটি পরিবর্তন করতে চাই। নাকি আমি ভুল বুঝেছি?
ক্লেয়ার ম্যাক্রে

@ লেজিবাজার আপনার দ্বিতীয় পরামর্শটি পুনরায় করুন, হ্যাঁ, আমি (বিশ্বাস করি) ডিডাব্লু সিনট্যাক্সটি খুব ভাল জানি! যাইহোক, ডিডাব্লু মার্কডাউনকে সমর্থন করলেও, আমি পাঠ্যগুলি প্রচলিত ডিডাব্লু সিনট্যাক্সে রূপান্তর করতে চাই, আমার সহকর্মীদের জন্য যারা এটি সম্পাদনা করতে পারে।
ক্লেয়ার ম্যাক্রে

আমি সবেমাত্র আবিষ্কার করেছি একটি খুব সংক্ষিপ্ত প্যান্ডোক ইস্যু আছে যা ডোকুইকি সমর্থন সমর্থন করার জন্য অনুরোধ করছে।
ক্লেয়ার ম্যাক্রে

আমি যখন প্যান্ডোক ইন্টিগ্রেশন সম্পর্কে কথা বলি তখন আমার মনে হয় "অতিরিক্ত লেখক যুক্ত করুন", যা এএএফআইসিস, মoinনমইন পাঠক হিসাবে দেখায় না মূল পরিবর্তন করে - এটি কেবল অতিরিক্ত হাস্কেল লিপি
অলস ব্যাজার

উত্তর:


11

স্টপ-প্রেস - আগস্ট 2014

প্যান্ডোক ১.১৩ সাল থেকে পান্ডোক এখন আমার ডোকউইকি লেখার বাস্তবায়ন রয়েছে - এবং এই স্ক্রিপ্টের চেয়ে আরও অনেকগুলি বৈশিষ্ট্য সেখানে প্রয়োগ করা হয়েছে। সুতরাং এই স্ক্রিপ্টটি এখন বেশ নিরঙ্কুশ।


রূপান্তরটি করার জন্য আমি পাইথনের স্ক্রিপ্টটি লিখতে চাই না বলে প্রাথমিকভাবে বলেছি, আমি ঠিক সেভাবেই শেষ করেছি।

আসল সময় সাশ্রয়ী পদক্ষেপটি ছিল পাণ্ডোককে মার্কডাউন পাঠ্যকে বিশ্লেষণ করার জন্য ব্যবহার করা এবং দস্তাবেজের একটি জেএসওএন প্রতিনিধিত্ব লিখে রাখা। এই JSON ফাইলটি তখন পার্স করা বেশিরভাগ ক্ষেত্রেই সহজ ছিল এবং ডোকুউইকির ফর্ম্যাটে লেখা ছিল।

নীচে স্ক্রিপ্টটি রয়েছে, যা মার্কডাউন এবং ডোকউইকির বিটগুলি প্রয়োগ করে যা আমি যত্ন নিয়েছিলাম - এবং আরও কয়েকটি। (আমি যে টেস্টুয়াইট লিখেছি তা আপলোড করি নি)

এটি ব্যবহারের জন্য প্রয়োজনীয়তা:

  • পাইথন (আমি উইন্ডোজটিতে 2.7 ব্যবহার করছিলাম)
  • পান্ডোক ইনস্টলড, এবং আপনার পাথের মধ্যে pandoc.exe (অথবা এর পরিবর্তে পান্ডোকের পুরো পথে রাখার জন্য স্ক্রিপ্টটি সম্পাদনা করুন)

আমি আশা করি এটি অন্য কারও কিছুটা সময় সাশ্রয় করেছে ...

সম্পাদনা 2 : 2013-06-26: আমি এখন এই কোডটি https://github.com/claremacrae/markdown_to_dokuwiki.py এ গিথুবে রেখেছি । নোট করুন যে কোডটি আরও ফর্ম্যাটগুলির জন্য সমর্থন যোগ করে, এবং এতে টেস্টুয়েটও রয়েছে।

1 সম্পাদনা করুন : মার্কডাউন এর ব্যাকটিক স্টাইলে কোড নমুনাগুলি পার্সিংয়ের জন্য কোড যুক্ত করতে সামঞ্জস্য করেছেন:

# -*- coding: latin-1 -*-

import sys
import os
import json

__doc__ = """This script will read a text file in Markdown format,
and convert it to DokuWiki format.

The basic approach is to run pandoc to convert the markdown to JSON,
and then to parse the JSON output, and convert it to dokuwiki, which
is written to standard output

Requirements:
 - pandoc is in the user's PATH
"""

# TODOs
# underlined, fixed-width
# Code quotes

list_depth = 0
list_depth_increment = 2

def process_list( list_marker, value ):
    global list_depth
    list_depth += list_depth_increment
    result = ""
    for item in value:
        result += '\n' + list_depth * unicode( ' ' ) + list_marker + process_container( item )
    list_depth -= list_depth_increment
    if list_depth == 0:
        result += '\n'
    return result

def process_container( container ):
    if isinstance( container, dict ):
        assert( len(container) == 1 )
        key = container.keys()[ 0 ]
        value = container.values()[ 0 ]
        if key == 'Para':
            return process_container( value ) + '\n\n'
        if key == 'Str':
            return value
        elif key == 'Header':
            level = value[0]
            marker = ( 7 - level ) * unicode( '=' )
            return marker + unicode(' ') + process_container( value[1] ) + unicode(' ') + marker + unicode('\n\n')
        elif key == 'Strong':
            return unicode('**') + process_container( value ) + unicode('**')
        elif key == 'Emph':
            return unicode('//') + process_container( value ) + unicode('//')
        elif key == 'Code':
            return unicode("''") + value[1] + unicode("''")
        elif key == "Link":
            url = value[1][0]
            return unicode('[[') + url + unicode('|') + process_container( value[0] ) + unicode(']]')
        elif key == "BulletList":
            return process_list( unicode( '* ' ), value)
        elif key == "OrderedList":
            return process_list( unicode( '- ' ), value[1])
        elif key == "Plain":
            return process_container( value )
        elif key == "BlockQuote":
            # There is no representation of blockquotes in DokuWiki - we'll just
            # have to spit out the unmodified text
            return '\n' + process_container( value ) + '\n'

        #elif key == 'Code':
        #    return unicode("''") + process_container( value ) + unicode("''")
        else:
            return unicode("unknown map key: ") + key + unicode( " value: " ) + str( value )

    if isinstance( container, list ):
        result = unicode("")
        for value in container:
            result += process_container( value )
        return result

    if isinstance( container, unicode ):
        if container == unicode( "Space" ):
            return unicode( " " )
        elif container == unicode( "HorizontalRule" ):
            return unicode( "----\n\n" )

    return unicode("unknown") + str( container )

def process_pandoc_jason( data ):
    assert( len(data) == 2 )
    result = unicode('')
    for values in data[1]:
        result += process_container( values )
    print result

def convert_file( filename ):
    # Use pandoc to parse the input file, and write it out as json
    tempfile = "temp_script_output.json"
    command = "pandoc --to=json \"%s\" --output=%s" % ( filename, tempfile )
    #print command
    os.system( command )

    input_file = open(tempfile, 'r' )
    input_text = input_file.readline()
    input_file.close()

    ## Parse the data
    data = json.loads( input_text )
    process_pandoc_jason( data )

def main( files ):
    for filename in files:
        convert_file( filename )

if __name__ == "__main__":
    files = sys.argv[1:]

    if len( files ) == 0:
        sys.stderr.write( "Supply one or more filenames to convert on the command line\n" )
        return_code = 1
    else:
        main( files )
        return_code = 0

    sys.exit( return_code )

@ অলিভারসালজবার্গ আপনাকে স্বাগতম (বিটিডাব্লু, আমি কেবল একটি প্রসাধনী টাইপ লক্ষ্য করেছি: এস / জেসন / জেসন / বেশ কয়েকটি জায়গায় ... :-))
ক্লেয়ার ম্যাক্রে

2

এটি একটি বিকল্প পদ্ধতি যা আমি সম্প্রতি ব্যবহার করছি।

এর সুবিধাগুলি হ'ল:

  • এটি আমার অন্যান্য উত্তরের পাইথন স্ক্রিপ্টের চেয়ে মার্কডাউন সিনট্যাক্সের অনেক বিস্তৃত পরিসরকে রূপান্তর করে
  • এটি পাইথন ইনস্টল করা প্রয়োজন হয় না
  • এটি প্যানডোক ইনস্টল করা প্রয়োজন হয় না

প্রস্তুতপ্রণালী:

  1. মার্কডাউনপ্যাড 2 এ মার্কডাউন ফাইলটি খুলুন

    মার্কডাউনপ্যাড 2 স্ক্রিনশট

  2. সম্পাদনা নির্বাচন করুন -> "এইচটিএমএল হিসাবে নথি অনুলিপি করুন"

  3. এইচটিএমএল 2 ডকুউইকি চালান

    ডকুউইকি স্ক্রিনশট থেকে এইচটিএমএল

  4. উপরের "এইচটিএমএল ইনপুট" ফলকে HTML টি আটকান

  5. সমস্ত নির্বাচন করুন এবং নীচে "ডকুইউইকি আউটপুট" ফলকের সমস্ত পাঠ্য অনুলিপি করুন

1

আদর্শ নয়, তবে কার্যকরী সমাধান

মার্কডাউন -> এইচটিএমএল -> ডোকুইকি

প্যান্ডোক দ্বারা প্রথম রূপান্তর

দ্বিতীয় - এইচটিএমএল-উইকি কনভার্টার-ডোকুউইকি পার্ল মডিউল

ইঙ্গিত: বিদ্যমান কোডের বিপরীত ক্রিয়া

সিলভারস্ট্রিপ-ডক-পুনর্গঠন গিট- রেপোতে ডোকুউইকি থেকে মার্কডাউনতে রূপান্তর করার জন্য কোড (পিএইচপি) রয়েছে


আমি এটি চেষ্টা করেছিলাম, কিন্তু, পার্লের সাথে পরিচিত না হয়ে, আমি মডিউলটি কাজ করার কাছাকাছি আসিনি।
ক্লেয়ার ম্যাক্রে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.