From bdced06811d71ec7f1946a32a5a60d60afb99774 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibaut=20Barr=C3=A8re?= Date: Mon, 2 Mar 2009 17:53:17 +0100 Subject: [PATCH] Added a better README. Preparing gem release. --- README.textile | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++ VERSION.yml | 4 ++++ magic.gemspec | 29 ++++++++++++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 VERSION.yml create mode 100644 magic.gemspec diff --git a/README.textile b/README.textile index e69de29..a6523b8 100644 --- a/README.textile +++ b/README.textile @@ -0,0 +1,61 @@ +Magic is an IronRuby gem making it easier to develop Windows Forms UI with IronRuby. + +Note that while developing it, it quickly became clear that Magic could be useful outside IronRuby and Windows Forms in the very near future (look at IDEAS to see where we're heading). + +h1. USAGE + +Here's a quick starter: + + form = Magic.build do + @menu = main_menu do + menu_item("&File") do + menu_item("&New") + menu_item("&Quit").click { Application.Exit } + menu_item("&Other Quit", :click => lambda { Application.Exit }) + end + end + form(:text => "Title", :menu => @menu) do + flow_layout_panel(:dock => :fill) do + button(:text => "Click me!").click do + MessageBox.Show("Hello from button!") + end + end + end + end + +h1. UNDER THE COVER + +A few points (see spec/magic_spec.rb for details): + +* classes to be built are inferred from method calls (converted from snake_case to CamelCase) +** menu_item creates an instance of MenuItem +** button becomes Button +** flow_layout_panel becomes FlowLayoutPanel +* method calls automatically add the object to its parent children collection (if the object is a Control or a MenuItem - this will become configurable) +* if a Hash is passed, corresponding properties are set after instanciation (:text => "This is the text") +* if the property is an enum, snake_case symbol value is allowed (:dock => :fill is the same as :dock => DockStyle.Fill) +* handlers are registered if a lambda is passed (:click => lambda) +* handlers can also be registered by calling the block directly (button.lambda do ... end) +* instance variables can be reused (form.menu = @menu) +* non-control (like BackgroundWorker for long-running operations) instances can be created (worker = background_worker) +* the last evaluted expression is returned. + +h1. TESTING + +Magic comes with its set of specs (based on MSpec). You'll currently have to tweak Rakefile (see spec task) to match your environment. Then you can run: + + rake spec + +to see all the (m)specs running. + +h1. IDEAS + +* build a website to make it easier to discover and understand +* become independent of Windows Forms (see Magic.method_missing for notes about that) +* try things out with WPF or Silverlight +* use it to generate graphs with QuickGraph +* use it outside IronRuby (the coupling to IronRuby is quite isolated) + +h1. COPYRIGHT + +Copyright (c) 2008 Thibaut Barrère. See LICENSE for details. diff --git a/VERSION.yml b/VERSION.yml new file mode 100644 index 0000000..f3b1618 --- /dev/null +++ b/VERSION.yml @@ -0,0 +1,4 @@ +--- +:major: 1 +:minor: 0 +:patch: 0 diff --git a/magic.gemspec b/magic.gemspec new file mode 100644 index 0000000..04aab62 --- /dev/null +++ b/magic.gemspec @@ -0,0 +1,29 @@ +# -*- encoding: utf-8 -*- + +Gem::Specification.new do |s| + s.name = %q{magic} + s.version = "1.0.0" + + s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= + s.authors = ["Thibaut Barr\303\250re"] + s.date = %q{2009-03-02} + s.description = %q{TODO} + s.email = %q{thibaut.barrere@gmail.com} + s.files = ["README.textile", "VERSION.yml", "lib/magic", "lib/magic/classifier.rb", "lib/magic/instanciator.rb", "lib/magic.rb", "spec/classifier_spec.rb", "spec/instanciator_spec.rb", "spec/magic_spec.rb", "spec/mspec", "spec/mspec/bin", "spec/mspec/bin/mkspec", "spec/mspec/bin/mkspec.bat", "spec/mspec/bin/mspec", "spec/mspec/bin/mspec-ci", "spec/mspec/bin/mspec-ci.bat", "spec/mspec/bin/mspec-run", "spec/mspec/bin/mspec-run.bat", "spec/mspec/bin/mspec-tag", "spec/mspec/bin/mspec-tag.bat", "spec/mspec/bin/mspec.bat", "spec/mspec/lib", "spec/mspec/lib/mspec", "spec/mspec/lib/mspec/commands", "spec/mspec/lib/mspec/commands/mkspec.rb", "spec/mspec/lib/mspec/commands/mspec-ci.rb", "spec/mspec/lib/mspec/commands/mspec-run.rb", "spec/mspec/lib/mspec/commands/mspec-tag.rb", "spec/mspec/lib/mspec/commands/mspec.rb", "spec/mspec/lib/mspec/expectations", "spec/mspec/lib/mspec/expectations/expectations.rb", "spec/mspec/lib/mspec/expectations/should.rb", "spec/mspec/lib/mspec/expectations.rb", "spec/mspec/lib/mspec/guards", "spec/mspec/lib/mspec/guards/background.rb", "spec/mspec/lib/mspec/guards/bug.rb", "spec/mspec/lib/mspec/guards/compliance.rb", "spec/mspec/lib/mspec/guards/conflict.rb", "spec/mspec/lib/mspec/guards/endian.rb", "spec/mspec/lib/mspec/guards/extensions.rb", "spec/mspec/lib/mspec/guards/guard.rb", "spec/mspec/lib/mspec/guards/noncompliance.rb", "spec/mspec/lib/mspec/guards/platform.rb", "spec/mspec/lib/mspec/guards/quarantine.rb", "spec/mspec/lib/mspec/guards/runner.rb", "spec/mspec/lib/mspec/guards/superuser.rb", "spec/mspec/lib/mspec/guards/support.rb", "spec/mspec/lib/mspec/guards/tty.rb", "spec/mspec/lib/mspec/guards/version.rb", "spec/mspec/lib/mspec/guards.rb", "spec/mspec/lib/mspec/helpers", "spec/mspec/lib/mspec/helpers/argv.rb", "spec/mspec/lib/mspec/helpers/bignum.rb", "spec/mspec/lib/mspec/helpers/const_lookup.rb", "spec/mspec/lib/mspec/helpers/environment.rb", "spec/mspec/lib/mspec/helpers/fixture.rb", "spec/mspec/lib/mspec/helpers/flunk.rb", "spec/mspec/lib/mspec/helpers/io.rb", "spec/mspec/lib/mspec/helpers/language_version.rb", "spec/mspec/lib/mspec/helpers/ruby_exe.rb", "spec/mspec/lib/mspec/helpers/scratch.rb", "spec/mspec/lib/mspec/helpers/tmp.rb", "spec/mspec/lib/mspec/helpers.rb", "spec/mspec/lib/mspec/matchers", "spec/mspec/lib/mspec/matchers/base.rb", "spec/mspec/lib/mspec/matchers/be_ancestor_of.rb", "spec/mspec/lib/mspec/matchers/be_close.rb", "spec/mspec/lib/mspec/matchers/be_empty.rb", "spec/mspec/lib/mspec/matchers/be_false.rb", "spec/mspec/lib/mspec/matchers/be_kind_of.rb", "spec/mspec/lib/mspec/matchers/be_nil.rb", "spec/mspec/lib/mspec/matchers/be_true.rb", "spec/mspec/lib/mspec/matchers/complain.rb", "spec/mspec/lib/mspec/matchers/eql.rb", "spec/mspec/lib/mspec/matchers/equal.rb", "spec/mspec/lib/mspec/matchers/equal_element.rb", "spec/mspec/lib/mspec/matchers/equal_utf16.rb", "spec/mspec/lib/mspec/matchers/have_constant.rb", "spec/mspec/lib/mspec/matchers/have_instance_method.rb", "spec/mspec/lib/mspec/matchers/have_method.rb", "spec/mspec/lib/mspec/matchers/have_private_instance_method.rb", "spec/mspec/lib/mspec/matchers/include.rb", "spec/mspec/lib/mspec/matchers/match_yaml.rb", "spec/mspec/lib/mspec/matchers/method.rb", "spec/mspec/lib/mspec/matchers/output.rb", "spec/mspec/lib/mspec/matchers/output_to_fd.rb", "spec/mspec/lib/mspec/matchers/raise_error.rb", "spec/mspec/lib/mspec/matchers/respond_to.rb", "spec/mspec/lib/mspec/matchers/stringsymboladapter.rb", "spec/mspec/lib/mspec/matchers.rb", "spec/mspec/lib/mspec/mocks", "spec/mspec/lib/mspec/mocks/mock.rb", "spec/mspec/lib/mspec/mocks/object.rb", "spec/mspec/lib/mspec/mocks/proxy.rb", "spec/mspec/lib/mspec/mocks.rb", "spec/mspec/lib/mspec/runner", "spec/mspec/lib/mspec/runner/actions", "spec/mspec/lib/mspec/runner/actions/debug.rb", "spec/mspec/lib/mspec/runner/actions/filter.rb", "spec/mspec/lib/mspec/runner/actions/gdb.rb", "spec/mspec/lib/mspec/runner/actions/tag.rb", "spec/mspec/lib/mspec/runner/actions/taglist.rb", "spec/mspec/lib/mspec/runner/actions/tagpurge.rb", "spec/mspec/lib/mspec/runner/actions/tally.rb", "spec/mspec/lib/mspec/runner/actions/timer.rb", "spec/mspec/lib/mspec/runner/actions.rb", "spec/mspec/lib/mspec/runner/context.rb", "spec/mspec/lib/mspec/runner/example.rb", "spec/mspec/lib/mspec/runner/exception.rb", "spec/mspec/lib/mspec/runner/filters", "spec/mspec/lib/mspec/runner/filters/match.rb", "spec/mspec/lib/mspec/runner/filters/profile.rb", "spec/mspec/lib/mspec/runner/filters/regexp.rb", "spec/mspec/lib/mspec/runner/filters/tag.rb", "spec/mspec/lib/mspec/runner/filters.rb", "spec/mspec/lib/mspec/runner/formatters", "spec/mspec/lib/mspec/runner/formatters/describe.rb", "spec/mspec/lib/mspec/runner/formatters/dotted.rb", "spec/mspec/lib/mspec/runner/formatters/file.rb", "spec/mspec/lib/mspec/runner/formatters/html.rb", "spec/mspec/lib/mspec/runner/formatters/method.rb", "spec/mspec/lib/mspec/runner/formatters/specdoc.rb", "spec/mspec/lib/mspec/runner/formatters/spinner.rb", "spec/mspec/lib/mspec/runner/formatters/summary.rb", "spec/mspec/lib/mspec/runner/formatters/unit.rb", "spec/mspec/lib/mspec/runner/formatters/yaml.rb", "spec/mspec/lib/mspec/runner/formatters.rb", "spec/mspec/lib/mspec/runner/mspec.rb", "spec/mspec/lib/mspec/runner/object.rb", "spec/mspec/lib/mspec/runner/shared.rb", "spec/mspec/lib/mspec/runner/tag.rb", "spec/mspec/lib/mspec/runner.rb", "spec/mspec/lib/mspec/utils", "spec/mspec/lib/mspec/utils/name_map.rb", "spec/mspec/lib/mspec/utils/options.rb", "spec/mspec/lib/mspec/utils/ruby_name.rb", "spec/mspec/lib/mspec/utils/script.rb", "spec/mspec/lib/mspec/utils/version.rb", "spec/mspec/lib/mspec/version.rb", "spec/mspec/lib/mspec.rb", "spec/mspec/LICENSE", "spec/mspec/mspec.gemspec", "spec/mspec/Rakefile", "spec/mspec/README", "spec/mspec/spec", "spec/mspec/spec/commands", "spec/mspec/spec/commands/fixtures", "spec/mspec/spec/commands/fixtures/four.txt", "spec/mspec/spec/commands/fixtures/level2", "spec/mspec/spec/commands/fixtures/level2/three_spec.rb", "spec/mspec/spec/commands/fixtures/one_spec.rb", "spec/mspec/spec/commands/fixtures/three.rb", "spec/mspec/spec/commands/fixtures/two_spec.rb", "spec/mspec/spec/commands/mkspec_spec.rb", "spec/mspec/spec/commands/mspec_ci_spec.rb", "spec/mspec/spec/commands/mspec_run_spec.rb", "spec/mspec/spec/commands/mspec_spec.rb", "spec/mspec/spec/commands/mspec_tag_spec.rb", "spec/mspec/spec/expectations", "spec/mspec/spec/expectations/expectations_spec.rb", "spec/mspec/spec/expectations/should_spec.rb", "spec/mspec/spec/guards", "spec/mspec/spec/guards/background_spec.rb", "spec/mspec/spec/guards/bug_spec.rb", "spec/mspec/spec/guards/compliance_spec.rb", "spec/mspec/spec/guards/conflict_spec.rb", "spec/mspec/spec/guards/endian_spec.rb", "spec/mspec/spec/guards/extensions_spec.rb", "spec/mspec/spec/guards/guard_spec.rb", "spec/mspec/spec/guards/noncompliance_spec.rb", "spec/mspec/spec/guards/platform_spec.rb", "spec/mspec/spec/guards/quarantine_spec.rb", "spec/mspec/spec/guards/runner_spec.rb", "spec/mspec/spec/guards/superuser_spec.rb", "spec/mspec/spec/guards/support_spec.rb", "spec/mspec/spec/guards/tty_spec.rb", "spec/mspec/spec/guards/version_spec.rb", "spec/mspec/spec/helpers", "spec/mspec/spec/helpers/argv_spec.rb", "spec/mspec/spec/helpers/bignum_spec.rb", "spec/mspec/spec/helpers/const_lookup_spec.rb", "spec/mspec/spec/helpers/environment_spec.rb", "spec/mspec/spec/helpers/fixture_spec.rb", "spec/mspec/spec/helpers/flunk_spec.rb", "spec/mspec/spec/helpers/io_spec.rb", "spec/mspec/spec/helpers/language_version_spec.rb", "spec/mspec/spec/helpers/ruby_exe_spec.rb", "spec/mspec/spec/helpers/scratch_spec.rb", "spec/mspec/spec/helpers/tmp_spec.rb", "spec/mspec/spec/matchers", "spec/mspec/spec/matchers/base_spec.rb", "spec/mspec/spec/matchers/be_ancestor_of_spec.rb", "spec/mspec/spec/matchers/be_close_spec.rb", "spec/mspec/spec/matchers/be_empty_spec.rb", "spec/mspec/spec/matchers/be_false_spec.rb", "spec/mspec/spec/matchers/be_kind_of_spec.rb", "spec/mspec/spec/matchers/be_nil_spec.rb", "spec/mspec/spec/matchers/be_true_spec.rb", "spec/mspec/spec/matchers/complain_spec.rb", "spec/mspec/spec/matchers/eql_spec.rb", "spec/mspec/spec/matchers/equal_element_spec.rb", "spec/mspec/spec/matchers/equal_spec.rb", "spec/mspec/spec/matchers/equal_utf16_spec.rb", "spec/mspec/spec/matchers/have_constant_spec.rb", "spec/mspec/spec/matchers/have_instance_method_spec.rb", "spec/mspec/spec/matchers/have_method_spec.rb", "spec/mspec/spec/matchers/have_private_instance_method_spec.rb", "spec/mspec/spec/matchers/include_spec.rb", "spec/mspec/spec/matchers/match_yaml_spec.rb", "spec/mspec/spec/matchers/output_spec.rb", "spec/mspec/spec/matchers/output_to_fd_spec.rb", "spec/mspec/spec/matchers/raise_error_spec.rb", "spec/mspec/spec/matchers/respond_to_spec.rb", "spec/mspec/spec/matchers/stringsymboladapter_spec.rb", "spec/mspec/spec/mocks", "spec/mspec/spec/mocks/mock_spec.rb", "spec/mspec/spec/mocks/proxy_spec.rb", "spec/mspec/spec/runner", "spec/mspec/spec/runner/actions", "spec/mspec/spec/runner/actions/debug_spec.rb", "spec/mspec/spec/runner/actions/filter_spec.rb", "spec/mspec/spec/runner/actions/gdb_spec.rb", "spec/mspec/spec/runner/actions/tag_spec.rb", "spec/mspec/spec/runner/actions/taglist_spec.rb", "spec/mspec/spec/runner/actions/tagpurge_spec.rb", "spec/mspec/spec/runner/actions/tally_spec.rb", "spec/mspec/spec/runner/actions/timer_spec.rb", "spec/mspec/spec/runner/context_spec.rb", "spec/mspec/spec/runner/example_spec.rb", "spec/mspec/spec/runner/exception_spec.rb", "spec/mspec/spec/runner/filters", "spec/mspec/spec/runner/filters/a.yaml", "spec/mspec/spec/runner/filters/b.yaml", "spec/mspec/spec/runner/filters/match_spec.rb", "spec/mspec/spec/runner/filters/profile_spec.rb", "spec/mspec/spec/runner/filters/regexp_spec.rb", "spec/mspec/spec/runner/filters/tag_spec.rb", "spec/mspec/spec/runner/formatters", "spec/mspec/spec/runner/formatters/describe_spec.rb", "spec/mspec/spec/runner/formatters/dotted_spec.rb", "spec/mspec/spec/runner/formatters/file_spec.rb", "spec/mspec/spec/runner/formatters/html_spec.rb", "spec/mspec/spec/runner/formatters/method_spec.rb", "spec/mspec/spec/runner/formatters/specdoc_spec.rb", "spec/mspec/spec/runner/formatters/spinner_spec.rb", "spec/mspec/spec/runner/formatters/summary_spec.rb", "spec/mspec/spec/runner/formatters/unit_spec.rb", "spec/mspec/spec/runner/formatters/yaml_spec.rb", "spec/mspec/spec/runner/mspec_spec.rb", "spec/mspec/spec/runner/shared_spec.rb", "spec/mspec/spec/runner/tag_spec.rb", "spec/mspec/spec/runner/tags.txt", "spec/mspec/spec/spec_helper.rb", "spec/mspec/spec/utils", "spec/mspec/spec/utils/name_map_spec.rb", "spec/mspec/spec/utils/options_spec.rb", "spec/mspec/spec/utils/script_spec.rb", "spec/mspec/spec/utils/version_spec.rb", "spec/spec_helper.rb"] + s.has_rdoc = true + s.homepage = %q{http://github.com/thbar/magic} + s.rdoc_options = ["--inline-source", "--charset=UTF-8"] + s.require_paths = ["lib"] + s.rubygems_version = %q{1.3.1} + s.summary = %q{TODO} + + if s.respond_to? :specification_version then + current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION + s.specification_version = 2 + + if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then + else + end + else + end +end