diff --git a/android/src/main/java/com/contentful/rich/android/renderer/chars/TextRenderer.java b/android/src/main/java/com/contentful/rich/android/renderer/chars/TextRenderer.java index 0a6de8c..8c3d668 100644 --- a/android/src/main/java/com/contentful/rich/android/renderer/chars/TextRenderer.java +++ b/android/src/main/java/com/contentful/rich/android/renderer/chars/TextRenderer.java @@ -5,9 +5,10 @@ import android.text.SpannableStringBuilder; import android.text.style.BackgroundColorSpan; import android.text.style.StyleSpan; +import android.text.style.SubscriptSpan; +import android.text.style.SuperscriptSpan; import android.text.style.TextAppearanceSpan; import android.text.style.UnderlineSpan; - import com.contentful.java.cda.rich.CDARichMark; import com.contentful.java.cda.rich.CDARichMark.CDARichMarkBold; import com.contentful.java.cda.rich.CDARichMark.CDARichMarkItalic; @@ -67,10 +68,15 @@ public TextRenderer(@Nonnull AndroidProcessor processor) { if (mark instanceof CDARichMarkUnderline) { result.setSpan(new UnderlineSpan(), 0, result.length(), SPAN_EXCLUSIVE_EXCLUSIVE); } - if (mark instanceof CDARichMarkBold) { result.setSpan(new StyleSpan(Typeface.BOLD), 0, result.length(), SPAN_EXCLUSIVE_EXCLUSIVE); } + if (mark instanceof CDARichMark.CDARichMarkSubscript) { + result.setSpan(new SubscriptSpan(), 0, result.length(), SPAN_EXCLUSIVE_EXCLUSIVE); + } + if (mark instanceof CDARichMark.CDARichMarkSuperscript) { + result.setSpan(new SuperscriptSpan(), 0, result.length(), SPAN_EXCLUSIVE_EXCLUSIVE); + } if (mark instanceof CDARichMarkItalic) { result.setSpan(new StyleSpan(Typeface.ITALIC), 0, result.length(), SPAN_EXCLUSIVE_EXCLUSIVE); } diff --git a/android/src/main/java/com/contentful/rich/android/renderer/views/TextRenderer.java b/android/src/main/java/com/contentful/rich/android/renderer/views/TextRenderer.java index a686eac..ef56517 100644 --- a/android/src/main/java/com/contentful/rich/android/renderer/views/TextRenderer.java +++ b/android/src/main/java/com/contentful/rich/android/renderer/views/TextRenderer.java @@ -2,15 +2,15 @@ import android.graphics.Typeface; import android.text.SpannableStringBuilder; -import android.text.style.AbsoluteSizeSpan; import android.text.style.BackgroundColorSpan; import android.text.style.StyleSpan; +import android.text.style.SubscriptSpan; +import android.text.style.SuperscriptSpan; import android.text.style.TextAppearanceSpan; import android.text.style.UnderlineSpan; import android.util.TypedValue; import android.view.View; import android.widget.TextView; - import com.contentful.java.cda.rich.CDARichHeading; import com.contentful.java.cda.rich.CDARichMark; import com.contentful.java.cda.rich.CDARichMark.CDARichMarkBold; @@ -77,6 +77,12 @@ public TextRenderer(@Nonnull AndroidProcessor processor) { if (mark instanceof CDARichMarkBold) { textContent.setSpan(new StyleSpan(Typeface.BOLD), 0, textContent.length(), SPAN_EXCLUSIVE_EXCLUSIVE); } + if (mark instanceof CDARichMark.CDARichMarkSuperscript) { + textContent.setSpan(new SuperscriptSpan(), 0, textContent.length(), SPAN_EXCLUSIVE_EXCLUSIVE); + } + if (mark instanceof CDARichMark.CDARichMarkSubscript) { + textContent.setSpan(new SubscriptSpan(), 0, textContent.length(), SPAN_EXCLUSIVE_EXCLUSIVE); + } if (mark instanceof CDARichMarkItalic) { textContent.setSpan(new StyleSpan(Typeface.ITALIC), 0, textContent.length(), SPAN_EXCLUSIVE_EXCLUSIVE); } diff --git a/android/src/main/res/layout/rich_text_layout.xml b/android/src/main/res/layout/rich_text_layout.xml index 39454cb..33396b0 100644 --- a/android/src/main/res/layout/rich_text_layout.xml +++ b/android/src/main/res/layout/rich_text_layout.xml @@ -3,5 +3,6 @@ android:id="@id/rich_content" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" + android:padding="5dp" android:layout_height="wrap_content" /> diff --git a/android_sample/build.gradle b/android_sample/build.gradle index 2f68bd0..096db7b 100644 --- a/android_sample/build.gradle +++ b/android_sample/build.gradle @@ -1,7 +1,6 @@ plugins { id("com.android.application") - id "org.jetbrains.kotlin.android" version "1.6.0-RC" - id("org.jetbrains.kotlin.android.extensions") version "1.5.30" + id "org.jetbrains.kotlin.android" version "1.8.0" } repositories { @@ -9,14 +8,14 @@ repositories { } android { - compileSdkVersion 32 + compileSdk 33 buildToolsVersion "30.0.3" defaultConfig { applicationId "com.contentful.rich.android.sample" minSdkVersion 21 - targetSdkVersion 32 + targetSdkVersion 33 versionCode 1 versionName "1.0" @@ -24,13 +23,17 @@ android { } + buildFeatures { + viewBinding = true + } + compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility "11" + targetCompatibility "11" } buildTypes { - all { + configureEach { buildConfigField("String", "SPACE_ID", "\"${System.getenv("RICH_TEXT_SPACE_ID")}\"") buildConfigField("String", "DELIVERY_TOKEN", "\"${System.getenv("RICH_TEXT_DELIVERY_TOKEN")}\"") buildConfigField("String", "ENVIRONMENT_ID", "\"${System.getenv("RICH_TEXT_ENVIRONMENT_ID")}\"") @@ -49,13 +52,13 @@ dependencies { implementation project(path: ':android') implementation project(path: ':core') - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.20" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.3" - implementation 'androidx.appcompat:appcompat:1.5.0' + implementation 'androidx.appcompat:appcompat:1.6.0' implementation "com.contentful.java:java-sdk:${project.contentful_version}" implementation 'com.google.code.findbugs:jsr305:3.0.2' - implementation 'com.google.android.material:material:1.6.1' + implementation 'com.google.android.material:material:1.8.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' } diff --git a/android_sample/src/main/java/com/contentful/rich/android/sample/MainActivity.kt b/android_sample/src/main/java/com/contentful/rich/android/sample/MainActivity.kt index 66845a9..f313c8b 100644 --- a/android_sample/src/main/java/com/contentful/rich/android/sample/MainActivity.kt +++ b/android_sample/src/main/java/com/contentful/rich/android/sample/MainActivity.kt @@ -10,15 +10,15 @@ import com.contentful.java.cda.CDAEntry import com.contentful.java.cda.QueryOperation.Matches import com.contentful.java.cda.rich.CDARichDocument import com.contentful.java.cda.rich.CDARichParagraph +import com.contentful.rich.android.sample.databinding.ActivityMainBinding import com.contentful.rich.core.simple.RemoveEmpties import com.contentful.rich.core.simple.RemoveToDeepNesting import com.contentful.rich.core.simple.Simplifier -import kotlinx.android.synthetic.main.activity_main.* import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch private const val SPACE_ID = "i1ppeoxgdpvt" -private const val TOKEN = "MU0hFqSvQ7QdXT82RgduxtQCGQBckJqqZkPw3U6T-rY" +private const val TOKEN = "QuYNYLv6rVnCKOT4_-d3552xD4YIPFcKTWRb2Y227Ic" private const val ENVIRONMENT = "master" class MainActivity( @@ -29,19 +29,23 @@ class MainActivity( .build() ) : AppCompatActivity() { + private lateinit var binding: ActivityMainBinding + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.activity_main) + binding = ActivityMainBinding.inflate(layoutInflater) + val view = binding.root + setContentView(view) - setSupportActionBar(toolbar) + setSupportActionBar(binding.toolbar) supportActionBar?.setDisplayShowTitleEnabled(false) if (PAGES.last().name != "Contentful") { - spinner.prompt = "⌛ Loading from Contentful ⏳" + binding.spinner.prompt = "⌛ Loading from Contentful ⏳" loadPageFromContentful() } - spinner.onItemSelectedListener = object : OnItemSelectedListener { + binding.spinner.onItemSelectedListener = object : OnItemSelectedListener { override fun onItemSelected(parent: AdapterView<*>, view: View?, position: Int, id: Long) { supportFragmentManager.beginTransaction() .replace(R.id.container, PageFragment.newInstance(position)) @@ -63,7 +67,11 @@ class MainActivity( .entries() .values .map { entry -> - entry.getField("rich") as CDARichDocument + if(entry.getField("rich") != null) { + entry.getField("rich") as CDARichDocument + } else { + CDARichDocument() + } }.reduce { a, b -> val p = CDARichParagraph() p.content.addAll(b.content) @@ -80,8 +88,8 @@ class MainActivity( ) runOnUiThread { - spinner.prompt = PAGES[0].name - spinner.adapter = PageAdapter( + binding.spinner.prompt = PAGES[0].name + binding.spinner.adapter = PageAdapter( this@MainActivity, PAGES.toTypedArray() ) diff --git a/android_sample/src/main/java/com/contentful/rich/android/sample/Page.kt b/android_sample/src/main/java/com/contentful/rich/android/sample/Page.kt index 558ba83..b04e476 100644 --- a/android_sample/src/main/java/com/contentful/rich/android/sample/Page.kt +++ b/android_sample/src/main/java/com/contentful/rich/android/sample/Page.kt @@ -16,6 +16,8 @@ val PAGES = mutableListOf( text("Normal Text"), text("BoldText", listOf(CDARichMarkBold())), text("Italic", listOf(CDARichMarkItalic())), + text("Superscript", listOf(CDARichMarkSuperscript())), + text("Subscript", listOf(CDARichMarkSubscript())), text("Underline", listOf(CDARichMarkUnderline())), text("final String code;", listOf(CDARichMarkCode())), text("CustomText", listOf(CDARichMarkCustom("custom"))), @@ -24,6 +26,8 @@ val PAGES = mutableListOf( listOf( CDARichMarkCustom("custom"), CDARichMarkItalic(), + CDARichMarkSubscript(), + CDARichMarkSubscript(), CDARichMarkBold(), CDARichMarkCode(), CDARichMarkUnderline() @@ -129,7 +133,9 @@ val PAGES = mutableListOf( CDARichBlock().addAll( text("Quotes from "), text("Famous", listOf(CDARichMark.CDARichMarkBold())), - text(" People", listOf(CDARichMark.CDARichMarkItalic())) + text(" People", listOf(CDARichMark.CDARichMarkItalic())), + text(" Dogs", listOf(CDARichMark.CDARichMarkSuperscript())), + text(" Cats", listOf(CDARichMark.CDARichMarkSubscript())), ), CDARichQuote().addAll( text("You know you’re in love when you can’t fall asleep because reality is finally better than your dreams."), diff --git a/android_sample/src/main/java/com/contentful/rich/android/sample/PageAdapter.kt b/android_sample/src/main/java/com/contentful/rich/android/sample/PageAdapter.kt index ef549f6..2576c5f 100644 --- a/android_sample/src/main/java/com/contentful/rich/android/sample/PageAdapter.kt +++ b/android_sample/src/main/java/com/contentful/rich/android/sample/PageAdapter.kt @@ -2,11 +2,13 @@ package com.contentful.rich.android.sample import android.content.Context import android.content.res.Resources +import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ArrayAdapter import androidx.appcompat.widget.ThemedSpinnerAdapter -import kotlinx.android.synthetic.main.dropdown_item.view.* +import com.contentful.rich.android.sample.databinding.AppbarItemBinding +import com.contentful.rich.android.sample.databinding.DropdownItemBinding class PageAdapter(context: Context, objects: Array) : ArrayAdapter(context, R.layout.appbar_item, objects), ThemedSpinnerAdapter { @@ -14,29 +16,23 @@ class PageAdapter(context: Context, objects: Array) : private val mDropDownHelper: ThemedSpinnerAdapter.Helper = ThemedSpinnerAdapter.Helper(context) override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { - val view = if (convertView == null) { - val inflater = mDropDownHelper.dropDownViewInflater - inflater.inflate(R.layout.appbar_item, parent, false) - } else { - convertView - } + val binding: AppbarItemBinding = + if (convertView != null) AppbarItemBinding.bind(convertView) + else AppbarItemBinding.inflate(LayoutInflater.from(context), parent, false) - view.list_item_text.text = getItem(position)?.name ?: "null" + binding.listItemText.text = getItem(position)?.name ?: "null" - return view + return binding.root } override fun getDropDownView(position: Int, convertView: View?, parent: ViewGroup): View { - val view = if (convertView == null) { - val inflater = mDropDownHelper.dropDownViewInflater - inflater.inflate(R.layout.dropdown_item, parent, false) - } else { - convertView - } + val binding: DropdownItemBinding = + if (convertView != null) DropdownItemBinding.bind(convertView) + else DropdownItemBinding.inflate(LayoutInflater.from(context), parent, false) - view.list_item_text.text = getItem(position)?.name ?: "null" + binding.listItemText.text = getItem(position)?.name ?: "null" - return view + return binding.root } override fun getDropDownViewTheme(): Resources.Theme? { diff --git a/android_sample/src/main/java/com/contentful/rich/android/sample/PageFragment.kt b/android_sample/src/main/java/com/contentful/rich/android/sample/PageFragment.kt index 17a51ba..20779ec 100644 --- a/android_sample/src/main/java/com/contentful/rich/android/sample/PageFragment.kt +++ b/android_sample/src/main/java/com/contentful/rich/android/sample/PageFragment.kt @@ -1,27 +1,39 @@ package com.contentful.rich.android.sample import android.os.Bundle +import android.text.method.LinkMovementMethod import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView -import kotlinx.android.synthetic.main.fragment_page.* -import kotlinx.android.synthetic.main.fragment_page.view.* +import com.contentful.rich.android.sample.databinding.FragmentPageBinding +import com.contentful.rich.android.sample.databinding.SampleItemBinding class PageFragment : Fragment() { - class Holder(view: View) : RecyclerView.ViewHolder(view) + class Holder(private val binding: SampleItemBinding) : RecyclerView.ViewHolder(binding.root) { + fun bind(text: String) { + binding.sampleItemText.text = text + binding.sampleItemText.movementMethod = LinkMovementMethod.getInstance() + } + fun removeViews(view: View) { + binding.sampleItemCard.removeAllViews() + binding.sampleItemCard.addView(view) + } + } + private var _binding: FragmentPageBinding? = null + private val binding get() = _binding!! override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - val rootView = inflater.inflate(R.layout.fragment_page, container, false) - rootView.page_recycler.layoutManager = LinearLayoutManager(context, RecyclerView.VERTICAL, false) - rootView.page_recycler.adapter = + _binding = FragmentPageBinding.inflate(inflater, container, false) + binding.pageRecycler.layoutManager = LinearLayoutManager(context, RecyclerView.VERTICAL, false) + binding.pageRecycler.adapter = RichCharSequenceAdapter(arguments?.getInt(ARG_PAGE_INDEX, 0) ?: 0, requireContext()) - rootView.main_native_check.setOnCheckedChangeListener { _, isChecked -> + binding.mainNativeCheck.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { onNativeViewProcessingSelected() } else { @@ -29,11 +41,11 @@ class PageFragment : Fragment() { } } - return rootView + return binding.root } private fun onNativeViewProcessingSelected() { - fragment_page.page_recycler.adapter = + binding.pageRecycler.adapter = RichNativeViewAdapter( arguments?.getInt(ARG_PAGE_INDEX, 0) ?: 0, requireContext()) @@ -41,7 +53,7 @@ class PageFragment : Fragment() { } private fun onCharSequenceProcessingSelected() { - fragment_page.page_recycler.adapter = + binding.pageRecycler.adapter = RichCharSequenceAdapter( arguments?.getInt(ARG_PAGE_INDEX, 0) ?: 0, requireContext()) diff --git a/android_sample/src/main/java/com/contentful/rich/android/sample/RichCharSequenceAdapter.kt b/android_sample/src/main/java/com/contentful/rich/android/sample/RichCharSequenceAdapter.kt index 7dc42f8..4963c86 100644 --- a/android_sample/src/main/java/com/contentful/rich/android/sample/RichCharSequenceAdapter.kt +++ b/android_sample/src/main/java/com/contentful/rich/android/sample/RichCharSequenceAdapter.kt @@ -3,7 +3,6 @@ package com.contentful.rich.android.sample import android.content.Context import android.text.Spannable import android.text.SpannableStringBuilder -import android.text.method.LinkMovementMethod import android.text.style.ClickableSpan import android.view.LayoutInflater import android.view.View @@ -14,19 +13,18 @@ import com.contentful.java.cda.CDAEntry import com.contentful.java.cda.rich.CDARichHyperLink import com.contentful.rich.android.AndroidContext import com.contentful.rich.android.AndroidProcessor -import kotlinx.android.synthetic.main.sample_item.view.* +import com.contentful.rich.android.sample.databinding.SampleItemBinding class RichCharSequenceAdapter(pageIndex: Int, private val androidContext: Context) : RecyclerView.Adapter() { private val page: Page = PAGES[pageIndex] - private val inflater: LayoutInflater = LayoutInflater.from(androidContext) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PageFragment.Holder = - PageFragment.Holder(inflater.inflate(R.layout.sample_item, parent, false)) + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PageFragment.Holder { + val itemBinding = SampleItemBinding.inflate(LayoutInflater.from(parent.context), parent, false) + return PageFragment.Holder(itemBinding) + } override fun onBindViewHolder(holder: PageFragment.Holder, position: Int) { val item = page.document.content[position] val context = AndroidContext(androidContext) - val processor = AndroidProcessor.creatingCharSequences() processor.overrideRenderer( { _, node -> node is CDARichHyperLink && node.data is CDAEntry }, @@ -67,9 +65,7 @@ class RichCharSequenceAdapter(pageIndex: Int, private val androidContext: Contex ) val text = processor.process(context, item) ?: "???" - - holder.itemView.sample_item_text.text = text - holder.itemView.sample_item_text.movementMethod = LinkMovementMethod.getInstance() + holder.bind(text.toString()) } override fun getItemCount(): Int = page.document.content.size diff --git a/android_sample/src/main/java/com/contentful/rich/android/sample/RichNativeViewAdapter.kt b/android_sample/src/main/java/com/contentful/rich/android/sample/RichNativeViewAdapter.kt index e71a88f..a2f1e8e 100644 --- a/android_sample/src/main/java/com/contentful/rich/android/sample/RichNativeViewAdapter.kt +++ b/android_sample/src/main/java/com/contentful/rich/android/sample/RichNativeViewAdapter.kt @@ -11,14 +11,16 @@ import com.contentful.java.cda.CDAEntry import com.contentful.java.cda.rich.CDARichHyperLink import com.contentful.rich.android.AndroidContext import com.contentful.rich.android.AndroidProcessor -import kotlinx.android.synthetic.main.sample_item.view.* +import com.contentful.rich.android.sample.databinding.SampleItemBinding class RichNativeViewAdapter(pageIndex: Int, private val androidContext: Context) : RecyclerView.Adapter() { private val page: Page = PAGES[pageIndex] private val inflater: LayoutInflater = LayoutInflater.from(androidContext) - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PageFragment.Holder = - PageFragment.Holder(inflater.inflate(R.layout.sample_item, parent, false)) + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PageFragment.Holder { + val itemBinding = SampleItemBinding.inflate(LayoutInflater.from(parent.context), parent, false) + return PageFragment.Holder(itemBinding) + } override fun onBindViewHolder(holder: PageFragment.Holder, position: Int) { val item = page.document.content[position] @@ -54,8 +56,7 @@ class RichNativeViewAdapter(pageIndex: Int, private val androidContext: Context) val view = processor.process(context, item) ?: TextView(this.androidContext).apply { setText(R.string.error_no_view) } - holder.itemView.sample_item_card.removeAllViews() - holder.itemView.sample_item_card.addView(view) + holder.removeViews(view) } override fun getItemCount(): Int = page.document.content.size diff --git a/build.gradle b/build.gradle index e1bc40a..4ca611c 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ allprojects { group = "com.github.contentful.rich" version = '1.2.0' - ext.contentful_version = "10.5.6" + ext.contentful_version = "10.5.12" repositories { mavenCentral() @@ -26,4 +26,8 @@ dependencies { configurations.all { resolutionStrategy.cacheChangingModulesFor 0, 'seconds' +} +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 } \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 7eaa3c4..a4ec768 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip diff --git a/html/src/main/java/com/contentful/rich/html/renderer/TextRenderer.java b/html/src/main/java/com/contentful/rich/html/renderer/TextRenderer.java index 70e6626..3f11a12 100644 --- a/html/src/main/java/com/contentful/rich/html/renderer/TextRenderer.java +++ b/html/src/main/java/com/contentful/rich/html/renderer/TextRenderer.java @@ -38,6 +38,12 @@ public String render(@Nonnull HtmlContext context, @Nonnull CDARichNode node) { if (mark instanceof CDARichMark.CDARichMarkItalic) { result.insert(0, "").append(""); } + if (mark instanceof CDARichMark.CDARichMarkSuperscript) { + result.insert(0, "").append(""); + } + if (mark instanceof CDARichMark.CDARichMarkSubscript) { + result.insert(0, "").append(""); + } if (mark instanceof CDARichMark.CDARichMarkCode) { result.insert(0, "").append(""); } diff --git a/html/src/test/java/AllTheThingsTest.java b/html/src/test/java/AllTheThingsTest.java index b22696f..c46a4c1 100644 --- a/html/src/test/java/AllTheThingsTest.java +++ b/html/src/test/java/AllTheThingsTest.java @@ -76,9 +76,9 @@ public void allTheNodes() { " some list item content\n" + " \n" + " \n" + - "
\n" + + "

\n" + " Paragraph\n" + - "

\n" + + "

\n" + "
\n" + " Famous quote\n" + "
\n" + diff --git a/html/src/test/java/ListsTest.java b/html/src/test/java/ListsTest.java index 7c618c4..81b249b 100644 --- a/html/src/test/java/ListsTest.java +++ b/html/src/test/java/ListsTest.java @@ -30,19 +30,19 @@ public void threeUnorderedElementsListTest() { assertThat(result).isEqualTo( "
    \n" + "
  • \n" + - "
    \n" + + "

    \n" + " one\n" + - "

    \n" + + "

    \n" + "
  • \n" + "
  • \n" + - "
    \n" + + "

    \n" + " two\n" + - "

    \n" + + "

    \n" + "
  • \n" + "
  • \n" + - "
    \n" + + "

    \n" + " three\n" + - "

    \n" + + "

    \n" + "
  • \n" + "
\n"); } @@ -71,43 +71,43 @@ public void threeUnorderedElementsListAndOneNestedOrdered() { assertThat(result).isEqualTo("
    \n" + "
  • \n" + - "
    \n" + + "

    \n" + " one\n" + - "

    \n" + + "

    \n" + "
  • \n" + "
  • \n" + - "
    \n" + + "

    \n" + " two\n" + - "

    \n" + + "

    \n" + "
  • \n" + "
  • \n" + - "
    \n" + + "

    \n" + " three\n" + - "

    \n" + + "

    \n" + "
  • \n" + "
  • \n" + "
      \n" + "
    1. \n" + - "
      \n" + + "

      \n" + " a\n" + - "

      \n" + + "

      \n" + "
    2. \n" + "
    3. \n" + - "
      \n" + + "

      \n" + " b\n" + - "

      \n" + + "

      \n" + "
    4. \n" + "
    5. \n" + - "
      \n" + + "

      \n" + " c\n" + - "

      \n" + + "

      \n" + "
    6. \n" + "
    \n" + "
  • \n" + "
  • \n" + - "
    \n" + + "

    \n" + " <\uD83D\uDC51>four\n" + - "

    \n" + + "

    \n" + "
  • \n" + "
\n"); } diff --git a/settings.gradle.kts b/settings.gradle.kts index 4f45b3f..01e85b6 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -7,10 +7,10 @@ pluginManagement { resolutionStrategy { eachPlugin { if (requested.id.id.startsWith("com.android")) { - useModule("com.android.tools.build:gradle:7.2.0") + useModule("com.android.tools.build:gradle:7.4.0-beta02") } if (requested.id.id.startsWith("org.jetbrains.kotlin")) { - useVersion("1.7.10") + useVersion("1.8.0") } } }