blob: df5ca04ec810f0fd76639cc5b4b4717370a5424e [file] [log] [blame]
-- @atlcompiler atl2006
-- ******************************************************************************
-- Copyright (c) 2006 INRIA.
-- All rights reserved. This program and the accompanying materials
-- are made available under the terms of the Eclipse Public License v2.0
-- which accompanies this distribution, and is available at
-- http://www.eclipse.org/legal/epl-v20.html
--
-- Contributors:
-- INRIA - Initial implementation
--
-- ******************************************************************************
--@author Hugo Bruneliere (Hugo.Bruneliere <at> gmail.com)
module Metrics2Table;
create OUT : Table from IN : Metrics;
-------------------------------------------------------------------------------
-- HELPERS --------------------------------------------------------------------
-------------------------------------------------------------------------------
-- no helpers
-------------------------------------------------------------------------------
-- RULES ----------------------------------------------------------------------
-------------------------------------------------------------------------------
entrypoint rule TablesBuilding() {
do {
Metrics!Metric.allInstances()
->sortedBy(m | m.name)
->collect(m | thisModule.Metric2Table(m));
}
}
-- Rule 'Metric2Table'
-- This rule generates a table for each different metric.
lazy rule Metric2Table {
from
m : Metrics!Metric
to
ta : Table!Table (
rows <- Sequence{titleRow, m.values->collect(mv | thisModule.MetricValue2Row(mv))}->flatten()
),
titleRow : Table!Row (
cells <-Sequence{titleRowCell1, titleRowCell2}
),
titleRowCell1 : Table!Cell (
content <- ''
),
titleRowCell2 : Table!Cell (
content <- m.name
)
}
-- Rule 'MetricValue2Row'
-- This rule generates a row for each different metric value.
lazy rule MetricValue2Row {
from
mv : Metrics!MetricValue
to
valueRow : Table!Row (
cells <- Sequence{valueCell1, valueCell2}
),
valueCell1 : Table!Cell (
content <- mv.tag
),
valueCell2 : Table!Cell (
content <- mv.value.toString()
)
}