Xmenu-コンソールメニューを構築するための小さな「フレームワーク」

良い一日、親愛なるhabralum! 私のサービスの結果、コンソールアプリケーション(メニュー)を作成して、データベースの移行(移行だけでなく、他の異なる種類のサービスでも)に関連する差し迫った問題を解決することができました。 移行については話さないように、すぐに予約します! 開発はPython言語で行われるため、次は各国語の方言を使用した翻訳不可能なしゃれです。

同僚の現在の同僚は、しっかりと貼り付けられ、絡み合ったパーツのプラスチシンボールでした。 したがって、そのコードを変更、補足、または最悪の場合理解することができなかったため、アーキテクチャコンポーネントを分割した後、このバラライカを書き直すことにしました。 コンソールメニューを作成するためのpythonフレームワークを探してネットに行きました。 検索は失敗しました-少なくとも少し使いやすいメニューを構築するためのフレームワークのネットワークで見つかっただけではありませんでした。 しかし、2つの「ほぼ候補」が見つかりました。 は私の要求と完全には一致しません。 これは実際にはコンソールメニューではなく、手動でコマンドを入力してオートコンプリートを楽しむことができるインタラクティブなセッション(コマンドライン)にすぎません。 そうではありません。 コンソールは欲望にまったく対応していません それは
同じチーズ、ただしソースが異なる
また、生よりも。 タフタロジーでごめんなさい。

実際、コンソールメニューをレンダリングするためのクラスをいくつか作成することから始めることにしました( cmd2モジュールはレンダリングモジュールの助けを提供してくれたので、小さなxmenuを操作するために必要です)。 実際には、実装にトリックはありません。 3つのクラス、歴史の保存のためのコルタン-それがすべての物語です。 結果は、このようなミニフレームワークです。 すぐに吐き出さないでください これはプレアルファ版であることをお勧めします。 そして、 githubで xmenuを拾って見ることができます。 不足しているドキュメント(これまでのところ、不足している)を理解したくない人のために、クライアントコードの例をここに公開します。

# -*- coding: utf-8 -*- import sys from pymenu import Item, Menu, App class Twitter(Item): ''' This is twitter''' def __call__(self): sys.stdout.write('{0}\n'.format(self.name)) class Multiplier(Item): ''' Printing 1. Forever 1.''' def __call__(self): sys.stdout.write('Lorem ipsum Labor Excepteur ea ut.') def func(): ''' I am a function. Tasty and fragrand.''' print 'This is it.' class MyApp(App): ''' This is my App''' def __init__(self): menu = Menu(name='Main menu') menu.add(Twitter(name='Project run'), color='red') menu.add(Twitter(name='Other')) math = Menu(name='Math') math.add(Multiplier(name='Multi'), color='underline') inc_menu = Menu(name='Database') inc_menu.add(math) inc_menu.add(Twitter(name='Create')) inc_menu.add(Twitter(name='Drop')) menu.add(inc_menu) functinons = Menu(name='Functinons', doc='Useful functions!') functinons.add(func, name='f') menu.add(functinons, color='underline') super(MyApp, self).__init__(menu=menu, stdout=sys.stdout) def main(): MyApp().run() if __name__ == '__main__': main()
      
      





次のようになります。



これは絶対に混oticとしたメニューです-塗りつぶして判断しないでください。

したがって、xmenuは以下を提供します。



私はオープンソフトウェア運動にあまり積極的ではありませんが、この方向に進むことを約束します。このツールを開発し、補完します。 この提案を読んでくれたすべての人に感謝し、テストしてくれた人たちに特別な感謝をし、彼らの願いを表現し、私の欠陥を強調した。 そして、Habrは、これが私の最初の記事であり、ハラマンになることを学んでいるだけなので、無駄にしようとしなかったかもしれません。

UPD:バージョンが更新されました-githubで参照してください



All Articles