Hi list,
Is it possible to put a text label to an edge?
For example, I have two lines going from A to B, and I want to put a text on
those two lines.
A ----some text------ |
B
A ----another text ---|
Ascii art, :-)
Thanks!
Hi Frank,
I forward this to the Moose list (most PP action is going on there),
because other people might be interested as well.
On Wednesday, 20 July 2011, Frank Shearar <frank.shearar(a)gmail.com> wrote:
> Hi Lukas,
>
> I've been playing around with PetitParser lately
> (http://www.lshift.net/blog/2011/07/19/un-petit-haskell), and I
> thought (a) I'd tell you about another happy user and (b) share a
> trick, which you may already know. A println analogue for debugging
> one's productions, occasionally useful when one runs too far ahead of
> one's tests:
>
> PPParser>>debug: aString
> ^ self ==> [:x | Transcript showln: ('{1} ({2})' format: {aString. x.}). x].
You might be also be interested in #>=> that passes you a continuation
into the block, so it allows you to "debug" before and after the
parse. I used it to write the Glamour-based debugger. Look at the
tests for more details.
> One problem I have found is that PetitStream doesn't work well
> wrapping a (Squeak) FileStream. I had expected the following to just
> work:
>
> FileStream
> fileNamed: 'myFile'
> do: [:f | HaskellParser new parse: f]
>
> but I currently have to read the entire file into a String and parse
> that. I'm don't know if that's because of a difference between
> Squeak's and Pharo's FileStream implementation or a problem in
> PetitParer?
It should work, but convert the stream to a PPStram using
#asPetitStream. I cannot verify right now, because I don't have a
computer accessible. Parsing directly on a filestream could
potentially work (you might need to implement #uncheckedPeek) but will
be dead slow (PP extensively uses #position: and #next to randomly
acces the stream, as you can see on Figure 2 in
http://scg.unibe.ch/archive/papers/Reng10cDynamicGrammars.pdf).
Thanks for sharing your blog post and experience!
Lukas
--
Lukas Renggli
www.lukas-renggli.ch
Status: New
Owner: ----
Labels: Type-Defect Priority-Medium
New issue 684 by vonbecm...(a)gmail.com: SubscriptOutOfBounds: 4
http://code.google.com/p/moose-technology/issues/detail?id=684
Moose version: 4.5
Pharo image: Pharo1.3a#13258
Virtual machine used: Croquet Closure Cog VM [CoInterpreter
VMMaker-oscog.51]
Platform Name: unix
Class browser used (if applicable): OBSystemBrowserAdaptor
Steps to reproduce:
#. close all models
#. select a model
Actual Result:
SubscriptOutOfBounds: 4
Expected Result:
to open a model.
* Type-Defect
Attachments:
PharoScreenshot.1.png 69.7 KB
PharoDebug.log 4.7 KB
Thanks a lot!
Glamour works on Seaside out of the box again :)
Cheers,
Doru
On 18 Jul 2011, at 20:44, Lukas Renggli wrote:
> Great, thank you for the quick fix.
>
> On Monday, 18 July 2011, Stéphane Ducasse <stephane.ducasse(a)inria.fr> wrote:
>>
>> 13287
>> -----
>>
>> - Issue 4528: Exception on:fork: enhancement. Thanks Igor Stasenko and Lukas Renggli for the idea.
>>
>> - Issue 4529: Announcement delivery breaks if last subscriber is curtailed. Thanks Henrik Johanssen.
>>
>
> --
> Lukas Renggli
> www.lukas-renggli.ch
>
--
www.tudorgirba.com
"Some battles are better lost than fought."
Status: New
Owner: ----
Labels: Type-Defect Priority-Medium
New issue 676 by cy.delau...(a)gmail.com: glamour seaside no longer works
with last moose version
http://code.google.com/p/moose-technology/issues/detail?id=676
If you take the latest dev , then evaluate:
* Gofer new
squeaksource: 'Glamour';
package: 'ConfigurationOfGlamourSeaside';
load.
* ConfigurationOfGlamourSeaside loadDefault.
* WAKom startOn: 8080
Then if you make your web browser pointing at:
http://localhost:8080/glamour/
You will see that none the provided examples works.
By just seeing quickly the 'on:fork:' in the stack trace, I guess it could
be related to the recent changes with announcements (and so painfull to
debug :( )
Hi list,
I'd like to tell a browser to refresh, but keeping the selections.
Is this possible?
Where should I look?
This is to be able to show a live feed of events.
Thanks in advance!
Hello.
I currently looking at how to render the GLMDashboard in Glamour-seaside. I
already tried several things but my main problem is:
In the 'renderOn:' method of my SGLDashboardPresenter , if I write :
html div
with: [
self render: (self firstColumnPanesFrom: self browser) last on: html
]
].
Hi list,
Loading Glamour on Pharo 1.2.2-12353 gives me the following warning:
This package depends on the following classes:
SubscriptionRegistry
You must resolve these dependencies before you will be able to load these definitions:
SubscriptionRegistry>>glmSubscriptions
I did:
Gofer new
squeaksource: 'Glamour'; package: 'ConfigurationOfGlamour'; load. (Smalltalk at: #ConfigurationOfGlamour) perform: #loadDefault
Proceeding gives more warnings:
This package depends on the following classes: SubscriptionRegistry You must resolve these dependencies before you will be able to load these definitions: SubscriptionRegistry>>hasHandlerFor: SubscriptionRegistry>>lookFor: SubscriptionRegistry>>lookFor:ifNone: SubscriptionRegistry>>unsubscribeForEvent:
Proceeding loads but fails executing: GLMBasicExamples open
Thanks!
Status: New
Owner: ----
Labels: Type-Defect Priority-Medium
New issue 682 by step...(a)stack.nl: The basic examples don't show the usage
of format
http://code.google.com/p/moose-technology/issues/detail?id=682
The Glamour examples should be complete. There is currently no example
showing the usage of format:
Add a method to GLMBasicExamples:
formatAsWords
"self new formatAsWords openOn: (1 to: 100)"
<glmBrowser: 'Format' input: '(1 to: 100)'>
| browser |
browser := GLMTabulator new.
browser row: #list.
browser showOn: #list; using: [
browser tree
format: [ :x | x asWords];
display: [:x | x]].
^ browser
Glamour-Examples-StephanEggermont.187
Status: New
Owner: ----
Labels: Type-Defect Priority-Medium
New issue 683 by vonbecm...(a)gmail.com: MessageNotUnderstood: receiver
of "sender" is nil
http://code.google.com/p/moose-technology/issues/detail?id=683
Moose: 4.5
Pharo image: Pharo1.3a#13258
Virtual machine used: Croquet Closure Cog VM [CoInterpreter
VMMaker-oscog.51]
Platform Name: unix
Class browser used (if applicable): OBSystemBrowserAdaptor
Steps to reproduce:
#.select a model
#.press left button and select Visualize>>Overview pyramid
Actual Result:
MessageNotUnderstood: receiver of "sender" is nil
Expected Result:
to visualize "Overview Pyramid"
* Type-Defect
Attachments:
PharoScreenshot.1.png 87.7 KB
PharoDebug.log 34.8 KB
Hi Damien,
I reply to the Moose list because this might be interesting to other people too.
> I have some question/remarks about PetitParser:
>
> - it is not clear what PPParser>match* are used for. After reading the
> source code of the implementors, it looks like you want to know if two
> parsers are equal. Why would you do that? Why are the methods called
> match* and not equal*?
I guess you are referring to the extension methods in the package
'PetitAnalyzer'? The methods #matches:, #matchesIn:.
#matchingRangesIn:, ... are part of the core package 'PetitParser' and
are well commented (I think).
The methods in the package 'PetitAnalyzer' are called match*, because
this is not an equality operation. They do not only support the
comparison of two parsers, but can also compare patterns with parser
instances (essentially this is a little Prolog engine, very similar to
the refactoring engine). The matching and rewriting of parsers is
explained in my PhD (http://scg.unibe.ch/archive/phd/renggli-phd.pdf)
in Section "6.2.5 Declarative Grammar Rewriting".
For example:
" matches a sequence of any two parsers that are the same "
any := PPPattern any.
pattern := any , any.
pattern asParser match: $a asParser , $b inContext: Dictionary new.
" --> false, because $a and $b are different "
pattern asParser match: $a asParser , $a asParser inContext: Dictionary new.
" --> true, because $a and $a are the same "
If the match is successful, the patterns are bound to the matching
parsers. In the example above the dictionary would contain an entry:
any -> $a asParser
There are many tests in PPSearcherTest. Fancy patterns you can also
see in PPRewriterTest and PPOptimizer.
> - PPParser>>matchList* do never refer to self (but to call themselves
> recursively).
This looks correct to me. This is to recurse into the graph of parsers.
> - Why is #def: not defined in PPUnresolvedParser? You implemented it
> in PPParser. It might be useful for other parsers, but do you have an
> example?
PPParser is a superclass of PPUnresolvedParser, therefore you can send
#def: to any instance of PPUnresolvedParser.
PPUnresolvedParser and #def: are nice to quickly hack something ugly
together, better not (over)use them ...
Lukas
--
Lukas Renggli
www.lukas-renggli.ch
Hi all,
We are working to develop an Architecture Description Language (ADL) in
Moose. The objective of the development is to define a language that allows
to specify different components of an architecture so that these entities
can be manipulated directly (analysis, visualization, etc). The architecture
definition will be used to check rule conformance, for example. However, we
would not want to restrict ourselves to any particular usage of the ADL.
Today, we have implemented a preliminary version of ADLFamix by implementing
modules that actually contain MooseGroups. Based on these modules, we can
now write Arki queries for rule-checkling, for example. Now, we are
contemplating about the next step because different people implement
different things in an ADL. Some describe rules that specify connectors that
can exist between modules. However, this approach ties connectors to rules
and we cannot define a connector without any rules associated. Connectors
can be defined separately or these can also be inferred from Famix
associations of the Famix entities contained in modules. Also, rules can be
built into modules so that each one has its own repository (however, it is
not always possible to associate a rule to any particular module).
The purpose of the mail is to get feedback from the people on the group
about an ADL in Moose and its features. We are thinking in terms of, but not
limited to:
1) fundamental features (modules, connectors, rules, ??)
2) objectives: rule checking, architecture inference (e.g. reconstructing
plug-ins from java models in moose), ??
3) ??
thanx
Moosecians @ RMod
Hi,
I like this good energy of getting the metrics properly integrated in Moose. Currently, there are two mechanisms that are overlapping:
1. the Fame properties denoted by <MSEProperty: ...>. These are used both for import/export and for the UI
2. the Moose-specific properties denoted by <property: ...>. These are used only in the UI
Of these, we should eliminate the second one by transforming all <property:> annotations into <MSEProperty:> ones.
To get the incentives aligned, I now changed the MooseFinder to only work with the Fame properties. So, basically, at this point we have no reason to keep the old <property:> annotations.
Next are the <navigation:> properties. I suspect we want to declare them as <MSEProperty:> as well, and mark them as <derived>. But, this in the second step.
Cheers,
Doru
--
www.tudorgirba.com
"Every now and then stop and ask yourself if the war you're fighting is the right one."
All tests are green again.
Cheers,
Doru
Begin forwarded message:
> From: admin(a)moosetechnology.org
> Date: 16 July 2011 10:10:18 CEST
> To: tudor(a)tudorgirba.com, simon.denier(a)gmail.com, cy.delaunay(a)gmail.com, alexandre(a)bergel.eu, stephane.ducasse(a)inria.fr, jannik.laval(a)inria.fr
> Subject: Jenkins build is back to normal : moose-latest-dev #496
>
> See <http://hudson.moosetechnology.org/job/moose-latest-dev/496/>
>
>
--
www.tudorgirba.com
"Value is always contextual."
Hi Alexandre,
Is the defaultMinimal configuration up-to-date?
I tried it and it is loading a version of ConfigurationOfHealthReportProducer that does not exist... So I am wondering if I can rely on this minimal configuration in Mondrian.
Regards,
Veronica
Hi guys
I could not find metrics in the saved MSE metrics like LOC that cannot be computed by moose.
Are metrics saved? I remember writing tests to make sure that this was correct.
In addition it would be good to be able to select some metrics to be exported to other formats.
Stef
we wrote this test
testHasExactlySamePropertiesThan
"self debug: #testHasExactlySamePropertiesThan"
| cp |
"I should have the same entity than a copy of myself"
self assert: (self nodeClass hasExactlySamePropertiesThan: self
nodeClass).
self assert: (self nodeClass hasExactlySamePropertiesThan: self
nodeClass veryDeepCopy).
the previous assertion does not work because the incoming references are
indeed not pointing to the copy so this is correct that it does not work.
cp := self model entityNamed: LANOutputServer mooseName.
self deny: (self nodeClass hasExactlySamePropertiesThan: cp).
cp := self nodeClass veryDeepCopy.
cp instVarNamed: 'state' put: (cp instVarNamed: 'state') veryDeepCopy.
cp propertyNamed: #numberOfLinesOfCode put: 12000.
"This property is described as a fame property on the entity kind but
not existing on the copy
so two entities should have different properties"
self deny: (self nodeClass hasExactlySamePropertiesThan: cp).
cp := self nodeClass veryDeepCopy.
cp instVarNamed: 'state' put: (cp instVarNamed: 'state') veryDeepCopy.
cp propertyNamed: #NOS ifAbsentPut: 12000.
"This property is described but it does not exist on the entity kind
so two entities should have different properties"
self deny: (self nodeClass hasExactlySamePropertiesThan: cp).
Now is there a way to only access the values that are stored in the
properties?
Because right now we are using
allDeclaredProperties
and they include all the instance variable as well.
--
Andre Hora
Hi guys
We wrote
testHasExactlySamePropertiesThan
"p"
| cp |
"I should have the same entity than a copy of myself"
self assert: (self nodeClass hasExactlySamePropertiesThan: self
nodeClass deepCopy).
cp := self nodeClass deepCopy.
cp propertyNamed: #NOP ifAbsentPut: 12000.
"This property is described as a fame property but not existing on the
copy
so two entities should have different properties"
self deny: (self nodeClass hasExactlySamePropertiesThan: cp).
and deepCopy loops on a FMValueLink
--
Andre Hora
Hi guys
we are hacking with andre some tests for the exporter.
Now we would like to compare two FAMIX entities and in particular their
properties here are a bunch of questions we got
- why there is no class comment on MSEDefaultState and friends?
what is the difference between a property and an attributes
- how can I get all the properties defined on an entity?
there is allDefinedProperties
Now how can I apply a given FMDescription of a property obtained from the
the allDefinedProperties to a given entity
I was thinking about
aDescription valueFor: anEntity
Stef and Andre
--
Andre Hora
Hi
We are checking how we can make the FMRepositoryVisitor parametrized by an
exporting context attached to a model.
However the Repository only gets the model entities and not the model.
This is a pity because we lack information held in the model
(sourceLanguage, model versions, tags, who, what and the rest....)
export: aModel withMetamodel: aMetamodel to: aStream
| tower repository |
tower := FMCompleteTower new.
tower metaMetamodel: aMetamodel metamodel.
tower metamodel: aMetamodel.
tower model: (repository := (FMRepository with: aMetamodel) addAll:
aModel entities).
tower model exportOn: aStream
What is the constraint that made that FMRepository does not get a model but
just a list of entities?
We could pass the context to a repository but it seems better to pass a
model.
What do you think?
Stef and Andre
--
Andre Hora
Updates:
Labels: -Milestone-4.2
Comment #2 on issue 273 by tudor.gi...(a)gmail.com: The Morphic Glamour
should update the selectedText in a TextPresentation
http://code.google.com/p/moose-technology/issues/detail?id=273
(No comment was entered for this change.)
Hi guys
I would like your input and (also help) for the following.
I would like to have a web servers with some selected case studies for a show room on internet
We should have it for December. Now I think that we should join forces.
I think that we could take
We take one or two projects:
ArgoUML
Papyrus
Seaside
We could have an apache rewrite rule to dispatch to the right image
We create two specific images that contain models
for argoUML multiple versions
for papyrus a model with a limited amount of entities
for Moose itself/seaside so that we get testcoverage....
Then we propose different analysis
- metrics
- polymetric views
- eyeScope
- cycle identification
- distribution map (may of commits or something)
- evolution hierarchy (cf the paper of girba on using Hismo)
- reports
Usman this should correspond to your ideas of scenario.
So let me know what you think. It would be beneficial for the complete community so we need help.
Stef